Como posso obter uma referência a um módulo nesse módulo? Além disso, como posso obter uma referência ao pacote que contém esse módulo?
python
self-reference
Ram Rachum
fonte
fonte
Respostas:
fonte
Mais uma técnica, que não importa o módulo sys, e sem dúvida - depende do seu gosto - mais simples:
Esteja ciente de que não há importação. Python importa cada módulo apenas uma vez.
fonte
Se você tem uma classe nesse módulo, a
__module__
propriedade da classe é o nome do módulo da classe. Assim, você pode acessar o módulo viasys.modules[klass.__module__]
. Isso também funciona para funções.fonte
__module__
propriedade não é um módulo, mas uma string; portanto, umainspect.getabsfile(func.__module__)
falha com " TypeError: 'os' não é um objeto de módulo, classe, método, função, rastreamento, quadro ou código "; enquantoinspect.getabsfile(sys.modules[o.__module__])
parece passar.Você pode obter o nome do módulo atual usando
__name__
A referência do módulo pode ser encontrada no
sys.modules
dicionário.Veja a documentação do Python
fonte
Você pode passá-lo de fora:
Não é o ideal, mas funciona para o meu caso de uso atual.
fonte