Comments 9
Аннотации типов помогают делать очень интересные вещи. Довольно давно начал их активно использовать, но вот с TypeVar познакомился совсем недавно.
А еще аннотации можно использовать не только по прямому назначению — для типизации.
Например, они мне очень пригодились при построении одного из моих велосипедов — маппера из JSON в объекты Python. По началу я использовал для описания структур обычный dict, но пострадало удобство — IDE ничего не знает о полях соответствующих объектов. Привет опечатки и постоянное заглядывание в описания объектов. Тут-то на помощь и пришли аннотации и немного нестандартное их использование. И вуаля, IDE подсказывает мне поля и следит за их типами. Если кому интересно, могу рассказать подробнее.
А еще аннотации можно использовать не только по прямому назначению — для типизации.
Например, они мне очень пригодились при построении одного из моих велосипедов — маппера из JSON в объекты Python. По началу я использовал для описания структур обычный dict, но пострадало удобство — IDE ничего не знает о полях соответствующих объектов. Привет опечатки и постоянное заглядывание в описания объектов. Тут-то на помощь и пришли аннотации и немного нестандартное их использование. И вуаля, IDE подсказывает мне поля и следит за их типами. Если кому интересно, могу рассказать подробнее.
0
Пример с nan
не воспроизвёлся:
>>> import math
>>> d = {}
>>> d[math.nan] = 1
>>> d[math.nan] = 2
>>> d
{nan: 2}
>>>
Да и вообще,
>>> math.nan is math.nan
True
ЧЯДНТ? Win10, Python 3.6
0
По поводу аннотации для фабричного метода — c 3.7 можно использовать
И не придётся указывать TypeVar.
PEP563
from __future__ import annotations
И не придётся указывать TypeVar.
PEP563
0
А можно пример?
0
Вроде как-то так:
from __future__ import annotations
from typing import Type
class A:
DATA = 42
@classmethod
def create(cls: Type[A]) -> A:
print(cls.DATA)
return cls()
0
Only those users with full accounts are able to leave comments. Log in, please.
Подборка @pythonetc, август 2019