Was ich versuche, würde in der Befehlszeile so aussehen:
>>> import mymodule
>>> names = dir(mymodule)
Wie kann ich einen Verweis auf alle den Namen bekommen definiert in mymodule
von innen heraus mymodule
selbst?
Etwas wie das:
# mymodule.py
names = dir(__thismodule__)
Antworten:
Verwenden Sie einfach Globals ()
http://docs.python.org/library/functions.html#globals
quelle
Wie bereits erwähnt, erhalten Sie mit globals ein Wörterbuch im Gegensatz zu dir (), das eine Liste der im Modul definierten Namen enthält. Die Art und Weise, wie ich das normalerweise sehe, ist wie folgt:
quelle
sys.modules[__name__].__doc__
.operators.attrgetter('module.attribute')(sys.modules[__name__])
- Weißt du, wenn du verrückte Dinge tust, sagen dir die Leute, du sollst keine Pakete dynamisch aus Strings importieren und diese dann von Affen patchen, während du nicht in einer Klassesys.modules[__name__].__doc__
==__doc__
wie dies im aktuellen Namespace definiert ist. Das Abrufen des Modulobjekts für den Zugriff auf seine eigenen Attribute ist daher nicht erforderlich.Es mag spät sein zu antworten, aber ich habe nicht die richtige Antwort für mich gefunden. Die naheliegendste und präziseste Lösung (schneller als
inspect.stack()
) in der Python3.7.x
:Vorteile :
globals()
Methode.pytest
:Nachteile:
pytest.exe
die möglicherweise nicht das sind, was Sie wollen.inspect.getmodule
Je nach Anschluss kann bei gültigen Modulen immer noch None zurückgegeben werdenIch habe eine Erweiterung für Python: Wie importiere ich ein Modul unter Angabe des vollständigen Pfads?
Die Erweiterung mit Wrapper-Funktionen für diesen Fall:
Sie müssen nur die Erweiterung richtig initialisieren:
quelle