web-dev-qa-db-fra.com

Comment obtenir une référence à un module à l'intérieur du module lui-même?

Comment puis-je obtenir une référence à un module à partir de ce module? Aussi, comment puis-je obtenir une référence au paquet contenant ce module?

136
Ram Rachum
import sys
current_module = sys.modules[__name__]
190
truppo

Si vous avez une classe dans ce module, alors le __module__ La propriété de la classe est le nom de module de la classe. Ainsi, vous pouvez accéder au module via sys.modules[klass.__module__]. Cela fonctionne aussi pour les fonctions.

15
Michael

Une autre technique, qui n’importe pas le module sys, et qui peut être comparée à votre goût dépend plus simplement:

current_module = __import__(__name__)

Soyez conscient qu'il n'y a pas d'importation. Python importe chaque module une fois.

10
Uri

Vous pouvez obtenir le nom du module actuel en utilisant __name__

La référence du module se trouve dans le sys.modules dictionnaire.

Voir le Python documentation

10
pkit

Vous pouvez le transmettre de l'extérieur:

mymod.init(mymod)

Pas idéal, mais cela fonctionne pour mon cas d'utilisation actuel.

1
Sam Watkins