zsong zsong - 3 months ago 9
Python Question

Python: 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?

Answer

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.

Comments