Access-Namensraum des aufrufenden Modul
Ich weiß, das ist etwas, was man normalerweise nicht tun sollte, und ich die Gründe dafür wissen. Jedoch, ich mache eine debug-Funktion, die innerhalb einer Klasse, die angezeigt werden sollen, die einige Informationen über das Modul, von dem es aufgerufen.
Ich muss wissen, wie man eine Ebene im Raum der Namen eine variable zu finden, die sollte immer vorhanden sein in einem Programm, das beide Aufrufe dieses Modul und braucht diese Funktion.
Ich weiß, kann man die wichtigsten Namen space mit:
import __main__
Aber ich vermute, dass diese alles beinhaltet, was ab dem ersten Modul gestartet war, und ich will nur die eine, die genannt diese.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie es mit Python-interpreter stack
Dem Objekt, das aufruft, die "debug-Objekt" sollte nur passieren
self
als parameter. Dann wird die "debug-Objekt' Zugriff auf alle Anrufer Attribute. Zum Beispiel:Dieses Prinzip funktioniert gut, in verschiedenen Dateien.
inspect
Modul. Dies ermöglicht Ihnen zu sehen, die bei live-Objekte und Ihre Attribute, es erlaubt Ihnen auch, um die traverse nach hinten und finden, Anrufer-Objekte/namespace.inspect.getframeinfo(inspect.currentframe().f_back.f_back)
warvariuc schon beantwortet, aber ein Beispiel könnte zu groß sein. Wenn Sie möchten, sich bewusst sein, der vorherigen namespace verwenden, können Sie
inspect
:Dann können Sie tun: