Comment puis-je obtenir une référence à un module à partir de ce module? Aussi, comment puis-je obtenir une référence au package contenant ce module?
python
self-reference
Ram Rachum
la source
la source
Réponses:
la source
Une autre technique, qui n'importe pas le module sys, et sans doute - dépend de votre goût - plus simple:
Sachez qu'il n'y a pas d'importation. Python importe chaque module une seule fois.
la source
Si vous avez une classe dans ce module, la
__module__
propriété de la classe est le nom du module de la classe. Ainsi, vous pouvez accéder au module viasys.modules[klass.__module__]
. Cela fonctionne également pour les fonctions.la source
__module__
propriété ne soit pas un module, mais une chaîne; ainsi ainspect.getabsfile(func.__module__)
échoue avec " TypeError: 'os' n'est pas un module, une classe, une méthode, une fonction, une traceback, un cadre ou un objet de code "; tandis queinspect.getabsfile(sys.modules[o.__module__])
semble passer.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 la documentation Python
la source
Vous pouvez le transmettre de l'extérieur:
Pas idéal mais cela fonctionne pour mon cas d'utilisation actuel.
la source