Атрибут __annotations__ функцииPython

Программы на Python
Anonymous
Атрибут __annotations__ функции

Сообщение Anonymous »

В __annotations__ Quirks есть абзац, в котором говорится:

Во всех версиях Python 3 функциональные объекты лениво создают словарь аннотаций. если для этого объекта не определены аннотации. Вы можете удалить атрибут __annotations__, используя del fn.__annotations__, но если вы затем получите доступ к fn.__annotations__, объект создаст новый пустой словарь, который он сохранит и вернет в качестве своих аннотаций. Удаление аннотаций функции до того, как она лениво создаст свой словарь аннотаций, вызовет ошибку AttributeError; использование del fn.__annotations__ дважды подряд гарантированно всегда выдает ошибку AttributeError.

Я не знаю Не совсем понял последнее предложение. Я никак не могу вызвать AttributeError.
Если вы спросите меня, зачем мне это нужно, я не сделаю этого. Я спрашиваю просто потому, что после прочтения этого абзаца я не смог воспроизвести это исключение.

Код: Выделить всё

>>> def fn1(a, b):
...     return a + b
...
>>> del fn1.__annotations__
>>> del fn1.__annotations__
>>> del fn1.__annotations__
>>>
>>> def fn2(a: str, b: int) -> str:
...     return a * b
...
>>> del fn2.__annotations__
>>> del fn2.__annotations__
>>> del fn2.__annotations__
Протестировано на Python 3.10.6


Подробнее здесь: https://stackoverflow.com/questions/766 ... -attribute

Вернуться в «Python»