Функция Python имеет объект кода __code__
.
A sys.settrace
trace frame
имеет объект кода f_code
.
Для вызовов вызовов, которые являются функциями, как я могу получить объект функции (и его член __annotation__
)?
До сих пор, в результате проб и ошибок, я:
if hasattr(frame.f_globals.get(frame.f_code.co_name),"__annotations__"):
Это, похоже, работает для функций, но не для функций класса; Хуже того, он смешивает функции-члены класса с функциями верхнего уровня с тем же именем.
(Я на Python 3.2.3 (Xubuntu). Я вижу, что модуль Python 3.3 inspect
имеет функцию signature
, это вернет аннотация для объекта кода или ему тоже нужен объект функции?)