Прошу помощи в объяснении логики аннотаций типов (type hints)

Рейтинг: 4Ответов: 0Опубликовано: 17.06.2023

Коллеги, прошу помощи в аннотировании типов. Я либо не понимаю логики, либо у меня что-то не так настроено в 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]

Возможно, такие типы надо не так аннотировать?

Ответы

Ответов пока нет.