1. ホーム
  2. パイソン

[解決済み】呼び出されたメソッドで呼び出し元のメソッド名を取得する方法は?

2022-04-04 23:08:25

質問

Pythonです。呼び出されたメソッドで呼び出し元のメソッド名を取得する方法は?

2つのメソッドがあると仮定します。

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

def method2(self):
    ...

method1に対して変更を行わない場合、method2で呼び出し元の名前(この例ではmethod1)を取得するにはどうすればよいですか?

どのように解決するのですか?

inspect.getframeinfo といった関連する関数を inspect が役に立ちます。

>>> import inspect
>>> def f1(): f2()
... 
>>> def f2():
...   curframe = inspect.currentframe()
...   calframe = inspect.getouterframes(curframe, 2)
...   print('caller name:', calframe[1][3])
... 
>>> f1()
caller name: f1

このイントロスペクションは、デバッグや開発を支援するためのものであり、実稼働時の機能として頼ることはお勧めしません。