How to get the caller's method name in the called method?
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.
Shorter version:
import inspectdef f1(): f2()def f2(): print 'caller name:', inspect.stack()[1][3]f1()
(with thanks to @Alex, and Stefaan Lippen)
This seems to work just fine:
import sysprint sys._getframe().f_back.f_code.co_name