¿Cómo obtener el nombre del método de la persona que llama en el método llamado?
Python: ¿Cómo obtener el nombre del método de la persona que llama en el método llamado?
Supongamos que tengo 2 métodos:
def method1(self):
...
a = A.method2()
def method2(self):
...
Si no quiero hacer ningún cambio en el método1, ¿cómo obtener el nombre de la persona que llama (en este ejemplo, el nombre es método1) en el método2?
Aceptado
inspeccionar.getframeinfo y otras funciones relacionadas inspect
pueden ayudar:
>>> 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
esta introspección tiene como objetivo ayudar a la depuración y el desarrollo; No es recomendable confiar en él para fines de funcionalidad de producción.
Versión más corta:
import inspect
def f1(): f2()
def f2():
print 'caller name:', inspect.stack()[1][3]
f1()
(con agradecimiento a @Alex y Stefaan Lippen )
Esto parece funcionar bien:
import sys
print sys._getframe().f_back.f_code.co_name