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

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