свежий питон
temp: Celsius = 36.6
?
тогда уж Celsius = NewType("Celsius", float(
Ньютайпы тогда уж
А в чем плюс NewType?
mypy будет ругаться на неявные касты
foo: Celsius = 10.0 + 20.0 Будет ошибкой?
да, вдруг ты метры к килограммам прибавляешь
Хммм, не очень ( Если такие хинты только в части кодовой базы, то Foo = float Bar = float x: float = 1.23 y: Foo = 1.23 z: Bar = 1.23 def foo(n: Foo): pass foo(x) # no error foo(y) # no error foo(z) # error Будет для меня идеальным поведением
Вот я взял и длине приравнял вес. Это не корректно же $ mypy aliases.py Success: no issues found in 1 source file $ cat aliases.py Length = float Weight = float x: Weight = 1 y: Length = x
Да, но тогда если ты сменишь тайпхинт float на Length в фунцию, которая вызывается в 10 местах с float аргументами, придется добавлять касты перед вызовом во всех этих местах
нет, касты надо только на входе, в коде везде придется менять на Length, иначе смысла ноль в этом
cast вообще для случаев "у нас тут динамическое легаси, его нормально не затипизировать, переписывать лень, Any не хотим, завалим кастами"
"Динамическое легаси которое лень переписывать" - это примерно моя ситуация )
Обсуждают сегодня