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, кстати)? Благодарю.

Ответы на вопрос(1)

Ваш ответ на вопрос