views:

289

answers:

2

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?

+6  A: 

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.

Alex Martelli
A: 

To those who only replied in saying that you never want to do this...I have only this to say: Those who would be willing to deny someone of doing something without understanding the context in which they desire to do it must be either pessimistic or without imagination.

agustinMichael