¿Cómo obtener el nombre del método de la persona que llama en el método llamado?

Resuelto zs2020 asked hace 14 años • 13 respuestas

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?

zs2020 avatar Apr 16 '10 22:04 zs2020
Aceptado

inspeccionar.getframeinfo y otras funciones relacionadas inspectpueden 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.

Alex Martelli avatar Apr 16 '2010 15:04 Alex Martelli

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 )

Todd Owen avatar Dec 29 '2011 04:12 Todd Owen

Esto parece funcionar bien:

import sys
print sys._getframe().f_back.f_code.co_name
Augiwan avatar Jul 24 '2014 18:07 Augiwan