Wie kann ich den Namen der aufrufenden Methode in Python ermitteln?

Mary-Kate Olsen
Freigeben: 2024-11-10 02:33:02
Original
1001 Leute haben es durchsucht

How Can I Determine the Name of the Calling Method in Python?

Den Methodennamen des Aufrufers in Python finden

In der objektorientierten Programmierung können Methoden häufig andere Methoden für dasselbe oder andere Objekte aufrufen. In Situationen, in denen eine aufgerufene Methode Informationen über ihren Aufrufer benötigt, kann es hilfreich sein, den Methodennamen des Aufrufers zu erhalten.

Identifizieren des Problems

Bedenken Sie den folgenden Python-Code:

def method1(self):
    ...
    a = A.method2()

def method2(self):
    ...
Nach dem Login kopieren

In diesem Beispiel haben wir zwei Methoden, Methode1 und Methode2. Angenommen, wir möchten den Namen des Aufrufers von Methode2 aus dieser Methode selbst erhalten. Konkret möchten wir feststellen, dass Methode1 der Aufrufer ist.

Enthüllung der Lösung mithilfe von Selbstbeobachtung

Python stellt das Inspect-Modul bereit, das Selbstbeobachtungsfunktionen bietet. So können wir es nutzen, um unser Ziel zu erreichen:

import inspect

def method1(self):
    ...
    a = A.method2()

def method2(self):
    frame = inspect.currentframe()
    outer_frame = inspect.getouterframes(frame, 2)
    print('caller name:', outer_frame[1][3])
Nach dem Login kopieren

Durch den Aufruf von inspect.getouterframes(frame, 2) erhalten wir eine Liste der äußeren Frames, die den Aufrufstapel darstellen. Der zweite Frame in dieser Liste entspricht dem Aufrufer von Methode2, in unserem Fall Methode1. Das vierte Element in jedem Frame-Tupel stellt den Methodennamen dar, den wir auf der Konsole ausgeben.

Vorsichtsmaßnahmen

Introspektion kann zwar für das Debuggen und die Entwicklung nützlich sein, ist es aber nicht Es wird empfohlen, sich bei produktionskritischen Funktionen darauf zu verlassen.

Das obige ist der detaillierte Inhalt vonWie kann ich den Namen der aufrufenden Methode in Python ermitteln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage