Функция Python имеет объект кода __code__
.
Трассировка sys.settrace
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
; вернет ли она аннотацию для объекта кода или ей тоже нужен объект-функция?)