pythonintrospection

How to get the caller's method name in the called method?


Python: How to get the caller's method name in the called method?

Assume I have 2 methods:

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

def method2(self):
    ...

If I don't want to do any change for method1, how to get the name of the caller (in this example, the name is method1) in method2?


Solution

  • inspect.getframeinfo and other related functions in inspect can help:

    >>> 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
    

    this introspection is intended to help debugging and development; it's not advisable to rely on it for production-functionality purposes.