Wie man den Aufrufer der Methode name der aufgerufenen Methode?
Python: How to get the caller ' s name der Methode in der aufgerufenen Methode?
Angenommen ich habe 2 Methoden:
def method1(self):
...
a = A.method2()
def method2(self):
...
Wenn ich nicht will, zu tun, die Veränderung für methode1, wie man den Namen des Anrufers (in diesem Beispiel, der name ist methode1) in methode2?
- Ja. Jetzt will ich nur zum erzeugen der Dokumentation Zeug und nur zum testen.
- Technologie ist eine Sache, die Methodik ist eine andere.
- möglich, Duplikat der Bekommen die Anrufer name der Funktion innerhalb einer anderen Funktion in Python?
Du musst angemeldet sein, um einen Kommentar abzugeben.
inspizieren.getframeinfo und andere Verwandte Funktionen in
inspect
helfen können:diese Selbstbeobachtung soll dazu beitragen, debugging und Entwicklung; es ist nicht ratsam, sich auf das für die Produktion-Funktionalität Zwecke.
Kürzere version:
(mit Dank an @Alex und Stefaan Lippen)
Diese scheint zu funktionieren:
inspect.stack
Habe ich mit einer etwas längeren version, die versucht zu bauen, die eine volle name der Methode einschließlich Modul und Klasse.
https://gist.github.com/2151727 (rev 9cccbf)
stack
es immer noch leckt frames aufgrund rundem refs wie in der inspect-docsBit ein Zusammenschluss von dem Zeug oben. Aber hier ist mein knacken an.
Verwenden:
Ausgabe
modules = [(index, inspect.getmodule(stack[index][0])) for index in reversed(range(1, min(stack_size, len(inspect.stack()))))]
um die Module.Fand ich einen Weg, wenn man über Klassen und die Klasse die Methode gehört, UND die Methode. Es dauert ein bisschen Extraktion Arbeit, aber es macht seinen Punkt. Dies funktioniert in Python 2.7.13.
drucken können Sie eine Liste der Funktion wie hier beantwortet https://stackoverflow.com/a/56897183/4039061