Python как получить вызывающую функцию (а не только ее имя)?
Я хочу написать функцию, которая возвращает вызывающую функцию:
def foo():
return get_calling_function() #should return 'foo' function object
В Интернете есть множество примеров, как получить функцию вызованазвание, но не как получить реальный объект. Я пришел к следующему решению, которое получает имя, а затем ищет его в глобальном пространстве имен вызывающей функции. Однако это не работает для функций класса, так как там вам также нужно имя класса, и я представляю, что есть множество других крайних случаев.
from inspect import stack
def get_calling_function():
return stack()[2][0].f_globals[stack()[1][3]]
Итак, есть ли какой-нибудь совет, как или если можно написать эту функцию, чтобы она работала в общем (на Python 3, кстати)? Благодарю.