Я хочу найти имя функции, как она была вызвана... т.е. имя переменной, вызвавшей функцию. Использование базовых рецептов, то есть с __name__
, func_name
, или проверка базового стека у меня не работает. Например
def somefunc():
print "My name is: %s" % inspect.stack()[1][3]
a = somefunc
a()
# would output: out: "My name is: somefunc"
# whereas I want it to output: "My name is: a"
Моя интуиция говорит, что я могу это сделать, но я не могу понять. Есть гуру питона?
func_name
определяется при создании функции.a.func_name
этоsomefunc
. - person Michael Hoffman   schedule 18.07.2012def
и сохранено в ее атрибутахfunc_name
и__name__
). У вас может быть любое количество других идентификаторов, указывающих на него, но нет способа узнать изнутри функции, которая используется для его вызова. - person kindall   schedule 18.07.2012