Python 3.11+enumпонятие
enum.StrEnum
виды enum
Перечисление, члены которого — ещё и str (Python 3.11+): ведут себя как строки.
Синтаксис
class C(enum.StrEnum): ...
Главная ловушка — при замене привычного class C(str, Enum) на StrEnum меняется вывод: в 3.11+ у обычного миксина str() и f-строка дают 'C.S', а у StrEnum — 'small'. Ещё одна неочевидность: auto() здесь возвращает не число, а имя члена в нижнем регистре, и все значения обязаны быть строками — int в теле класса вызовет ошибку.
Примеры
import enum
class Size(enum.StrEnum):
S = 'small'
L = 'large'
print(Size.S == 'small') # → True
print(Size.S.upper()) # → SMALL
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности