Код: Выделить всё
from typing import MutableMapping, NewType
T_alias = MutableMapping[str, str]
T_new = NewType("T_new", MutableMapping[str, str])
Код: Выделить всё
vn: T_new
va: T_alias
vn = T_new({})
va = {}
Я попробовал:< /p>
Код: Выделить всё
va = T_alias({})
Код: Выделить всё
Expected no arguments to "MutableMapping" constructor). Поэтому я тоже попробовал:
va = T_alias()
Поэтому единственный способ инициализировать va, указав, что он имеет тип T_alias, — это использовать typing.cast:
Код: Выделить всё
va = cast(T_alias, {})
Итак, вопрос: правильно ли я понимаю использование псевдонимов типов и NewType? И еще, какой из них можно посоветовать в данном конкретном случае? Я считаю, что инициализация объектов T_new чище (мне не нравится cast()), но меня беспокоит, что NewType() приведет к некоторым накладным расходам при работе с этими объекты, и мне на самом деле не нужно передавать dict, поэтому я бы предпочел использовать псевдоним.
Подробнее здесь: https://stackoverflow.com/questions/694 ... -practices