Имя с только аннотацией синтаксически допустимо, но фактически не создает переменную.
>>> foo: int
>>> foo
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'foo' is not defined
Правильный тип для myVar
будет Union[myCustomClassType,None]
или его эквивалентом Optional[myCustomClassType]
,чтобы разрешить присвоение None
.
from typing import Optional
myVar: Optional[myCustomClassType] = None
В некоторой степени связано, если вы определите функцию, такую как
def foo(bar: int = None):
...
mypy
, которая будет молча "продвигать" типот bar
до Optional[int]
на основе назначенного значения по умолчанию.Похоже, он не делает то же самое в случае переменной аннотации.Похоже, что PyCharm следует этому примеру.