¿Cómo puedo obtener una referencia a un módulo desde ese módulo? Además, ¿cómo puedo obtener una referencia al paquete que contiene ese módulo?
python
self-reference
Ram Rachum
fuente
fuente
Respuestas:
fuente
Una técnica más, que no importa el módulo sys, y podría decirse, depende de su gusto, más simple:
Tenga en cuenta que no hay importación. Python importa cada módulo solo una vez.
fuente
Si tiene una clase en ese módulo, la
__module__
propiedad de la clase es el nombre del módulo de la clase. Por lo tanto, puede acceder al módulo a través desys.modules[klass.__module__]
. Esto también funciona para funciones.fuente
__module__
propiedad no es un módulo, sino una cadena; por lo tanto, uninspect.getabsfile(func.__module__)
error con " TypeError: 'os' no es un módulo, clase, método, función, rastreo, marco u objeto de código "; mientrasinspect.getabsfile(sys.modules[o.__module__])
parece pasar.Puede obtener el nombre del módulo actual usando
__name__
La referencia del módulo se puede encontrar en el
sys.modules
diccionario.Ver la documentación de Python
fuente
Puede pasarlo desde afuera:
No es ideal, pero funciona para mi caso de uso actual.
fuente