P
Python Заметки
@pythonotes2.5K подп.
802просмотров
31.9%от подписчиков
2 марта 2026 г.
questionScore: 882
Почему в прошлом посте я использовал StrEnum а не Enum? Всё просто, дефолтный Enum не поддерживает нативное сравнение с нужным нам типом. from enum import Enum class DefaultEnum(Enum): KEY = "value" "value" == DefaultEnum.KEY # False "value" == DefaultEnum.KEY.value # True Как видите, приходится вызывать .value, что неудобно в некоторых случаях и более многословно. StrEnum это исправляет: from enum import StrEnum class StringEnum(StrEnum): KEY = "value" "value" == StringEnum.KEY # True Для примера из прошлого поста это выглядело бы так: if task.status == TaskStatus.PENDING: ... Точно так же работает и IntEnum. StrEnum появился в версии 3.11, для более ранних использовали комбинацию MyEnum(str, Enum), что не тоже самое. StrEnum правильно создает значения с функцией auto(). Сочетание str+Enum создает числа, но в виде строк. Приходится явно писать строки. Сделал пару примеров для сравнения↗️ Когда не стоит использовать StrEnum: - когда нужно явное отличие значений энума от строки - когда в проекте уже используется обычный Enum #tricks
802
просмотров
1066
символов
Нет
эмодзи
Нет
медиа

Другие посты @pythonotes

Все посты канала →
Почему в прошлом посте я использовал StrEnum а не Enum? Всё — @pythonotes | PostSniper