Прошу помощи в объяснении логики аннотаций типов (type hints)
Коллеги, прошу помощи в аннотировании типов. Я либо не понимаю логики, либо у меня что-то не так настроено в PyCharm либо я просто что-то не так делаю. Буду благодарен за любые разъяснения. Документацию по type hints я читал.
Мне бы хотелось (так я понимаю логику), чтобы если я аннотировал некий тип переменной, то если я пытаюсь в эту переменную положить что-то другое, мне бы среда (в моем случае - PyCharm) подсказала, что я что-то делаю не так.
Но, по факту, в некоторых случаях, при явных несоответствиях типов, никаких предупреждений не выдается.
Пример 1.
d: dict[int, list[int]] = {1: [4], 2: ['d'], 3: ['g']}
Некоторыми значениями словаря является list[str]
при аннотированном list[int]
. Предупреждения нет.
Однако, если ВСЕ значения буду ошибочными - предупреждение будет:
d: dict[int, list[int]] = {1: ['4'], 2: ['d'], 3: ['g']}
Пример 2. Тоже, но со списками.
a: list[list[int]] = [[1], 2, 3]
Не вызывает предупреждение.
А вот так, вызовет:
a: list[list[int]] = [1, 2, 3]
Возможно, такие типы надо не так аннотировать?