#python
В Python любая функция - это объект. Но как тогда получить ссылку на этот объект внутри функции? Никакого self функция внутри себя не видит.
Ответы
Ответ 1
А что мешает использовать имя функции? >>> def foo(): ... return foo ... >>> 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 и может не работать на других. Используйте на свой страх и риск Ответ 2
Можно попробовать вот так: import inspect def foo(): name = inspect.stack()[0][3] print(name) print(globals()[name]) foo()
Комментариев нет:
Отправить комментарий