在Python中找出呼叫者的方法名稱
在物件導向程式設計中,方法通常可以呼叫相同或不同物件上的其他方法。在被呼叫方法需要有關其呼叫者的信息的情況下,獲取呼叫者的方法名稱可能很有價值。
識別問題
考慮以下 Python 程式碼:
def method1(self): ... a = A.method2() def method2(self): ...
在這個例子中,我們有兩個方法,method1 和 method2。假設我們想要從 method2 本身內部取得該方法的呼叫者的名稱。具體來說,我們想要確定 method1 是呼叫者。
使用內省揭開解決方案
Python 提供了檢查模組,該模組提供內省功能。以下是我們如何利用它來實現我們的目標:
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])
透過呼叫inspect.getouterframes(frame, 2),我們取得代表呼叫堆疊的外部框架清單。此列表中的第二個框架對應於 method2 的呼叫者,在我們的例子中是 method1。每個幀元組中的第四個元素表示方法名稱,我們將其列印到控制台。
注意事項
雖然內省對於調試和開發很有用,但它並不是建議依賴它來實現生產關鍵型功能。
以上是Python中如何決定呼叫方法的名稱?的詳細內容。更多資訊請關注PHP中文網其他相關文章!