В Python любая функция - это объект. Но как тогда получить ссылку на этот объект внутри функции? Никакого self функция внутри себя не видит.
Ответ
А что мешает использовать имя функции?
>>> def foo():
... return foo
...
>>> foo()
Если имя функции неизвестно, то получить его нельзя. Подобая функциональность была отвергнута
Но, как говорится, если очень хочется, то есть несколько вариантов. Я бы не рекомендовал так делать без особой на то нужды
Через inspect
import inspect
def foo():
print inspect.stack()[0][3]
Через sys
import sys
def foo():
print sys._getframe().f_code.co_name
Получить метод, зная название функции, можно через функцию globals()
Upd
Внимание! Согласно документации не все реализации python могут включать sys._getframe. Это функция для внутреннего использования интерпретатора CPython и может не работать на других. Используйте на свой страх и риск
Комментариев нет:
Отправить комментарий