Как с помощью аннотации типов указать что элементы списка неизменяемые?
Требуется указать для списка, что все его элементы принадлежат к неизменяемым типам:
list[<...>]
Требуется именно "категория", наподобие list[typing.Immutable] (взял из головы). А не перечислять все типы.
Не смог найти информацию в интернете, также копался в модуле typing.
Есть мысль обойтись собственным решением:
Immutable = str | int | bool | ...
list[Immutable]
Ответы (1 шт):
Автор решения: Flop-code
→ Ссылка
На мой взгляд, лучшим решением будет объявить Immutable вот так:
Immutable = typing.Hashable
Человеку, который читает код, неизменяемость элементов будет понятна из названия, а так как hashable объект обязан быть неизменяемым, то mypy будет высвечивать соответствующее предупреждение при нарушении типизации.
my_list: list[Immutable] = [...]
Других вариантов обозначить неизменяемость с помощью typing нет.