O que estou tentando fazer ficaria assim na linha de comando:
>>> import mymodule
>>> names = dir(mymodule)
Como posso obter uma referência para todos os nomes definidos no mymodule
de dentro mymodule
si?
Algo assim:
# mymodule.py
names = dir(__thismodule__)
Respostas:
Basta usar globais ()
http://docs.python.org/library/functions.html#globals
fonte
Conforme mencionado anteriormente, os globais fornecem um dicionário em vez de dir (), que fornece uma lista dos nomes definidos no módulo. A maneira como normalmente vejo isso é assim:
fonte
sys.modules[__name__].__doc__
.operators.attrgetter('module.attribute')(sys.modules[__name__])
- você sabe, se você fizer coisas malucas que as pessoas lhe dizem para não fazer, como importar pacotes dinamicamente de strings e então fazer monkey patch neles enquanto não estiver em uma classe ou qualquer coisa ...sys.modules[__name__].__doc__
==__doc__
como definido no namespace atual. Buscar o objeto do módulo para acessar seus próprios atributos, portanto, não é necessário.Pode ser tarde para responder, mas não encontrei a resposta correta para mim. A solução mais próxima e precisa (mais rápida do que
inspect.stack()
) no python3.7.x
:Prós :
globals()
método.pytest
:Contras:
pytest.exe
qual pode não o que você deseja.inspect.getmodule
ainda pode retornar None em módulos válidos, dependendo do ganchoEu tenho uma extensão para o python: como importar um módulo dado o caminho completo?
A extensão com funções de wrapper para esse caso:
Você precisa apenas inicializar a extensão corretamente:
fonte