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?
import sys
current_module = sys.modules[__name__]
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.
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.
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
Vous pouvez le transmettre de l'extérieur:
mymod.init(mymod)
Pas idéal, mais cela fonctionne pour mon cas d'utilisation actuel.