Python Glossary English

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Сообщить о неточности