При написании функции в Python с такими подсказками типа:
def foo(token: Token=None):
pass
Преобразуется в подсказку этого типа: Optional[Token]
. При необязательном значении также принимается значение None.
При написании того же типа подсказки для поля класса, оно не ведет себя так же:
class bar:
foo: Token = None
Здесь подсказка типа шашки, как встроенный в отчетах PyCharms:
Ожидаемый тип 'Token', вместо него есть None.
Мои вопросы:
- Почему в случае параметров подсказка и None неявно объединены в
Optional[...]
? - Почему поля ведут себя по-разному, имея одинаковый синтаксис?
Я использую PyCharm 2019.3.