Ce que j'essaye de faire ressemblerait à ceci dans la ligne de commande:
>>> import mymodule
>>> names = dir(mymodule)
Comment puis - je obtenir une référence à tous les noms définis à mymodule
partir de mymodule
lui - même?
Quelque chose comme ça:
# mymodule.py
names = dir(__thismodule__)
Réponses:
Utilisez simplement les globals ()
http://docs.python.org/library/functions.html#globals
la source
Comme mentionné précédemment, globals vous donne un dictionnaire par opposition à dir () qui vous donne une liste des noms définis dans le module. La façon dont je vois généralement cela est comme ceci:
la source
sys.modules[__name__].__doc__
.operators.attrgetter('module.attribute')(sys.modules[__name__])
- vous savez, si vous faites des choses folles, les gens vous disent de ne pas faire comme importer dynamiquement des paquets à partir de chaînes, puis les patcher tout en n'étant pas dans une classe ou quoi que ce soit ...sys.modules[__name__].__doc__
==__doc__
car cela est défini dans l'espace de noms actuel. Il n'est donc pas nécessaire de récupérer l'objet module pour accéder à ses propres attributs.Il est peut-être tard pour répondre, mais je n'ai pas trouvé la bonne réponse pour moi-même. La solution la plus proche et la plus précise (plus rapide que
inspect.stack()
) dans le python3.7.x
:Avantages :
globals()
méthode.pytest
:Les inconvénients:
pytest.exe
qui pourrait ne pas ce que vous voulez.inspect.getmodule
peut toujours renvoyer None sur les modules valides en fonction du hookingJ'ai une extension au python: comment importer un module avec le chemin complet?
L'extension ayant des fonctions wrapper pour ce cas:
Vous devez simplement initialiser correctement l'extension:
la source