Wie kann ich innerhalb dieses Moduls einen Verweis auf ein Modul erhalten? Wie kann ich auch einen Verweis auf das Paket erhalten, das dieses Modul enthält?
Wie kann ich innerhalb dieses Moduls einen Verweis auf ein Modul erhalten? Wie kann ich auch einen Verweis auf das Paket erhalten, das dieses Modul enthält?
Antworten:
import sys
current_module = sys.modules[__name__]
Eine weitere Technik, die das sys-Modul nicht importiert und wohl - je nach Geschmack - einfacher ist:
current_module = __import__(__name__)
Beachten Sie, dass kein Import erfolgt. Python importiert jedes Modul nur einmal.
Wenn Sie eine Klasse in diesem Modul haben, ist die __module__
Eigenschaft der Klasse der Modulname der Klasse. So können Sie über auf das Modul zugreifen sys.modules[klass.__module__]
. Dies funktioniert auch für Funktionen.
__module__
Eigenschaft (zumindest) für eine Funktion kein Modul, sondern eine Zeichenfolge zu sein. also ein inspect.getabsfile(func.__module__)
irgendwie „ Typeerror:‚o‘ist kein Modul, Klassen-, Methoden-, Funktion, Zurückverfolgungs, Rahmen oder Codeobjekt “; während inspect.getabsfile(sys.modules[o.__module__])
scheint zu vergehen.
Sie können den Namen des aktuellen Moduls mit abrufen __name__
Die Modulreferenz finden Sie im sys.modules
Wörterbuch.
Siehe die Python- Dokumentation
Sie können es von außen weitergeben:
mymod.init(mymod)
Nicht ideal, aber es funktioniert für meinen aktuellen Anwendungsfall.