Python 3.11+enumпонятие
enum.ReprEnum
виды enum
Базовый класс для IntEnum/StrEnum: сохраняет repr подмешанного типа (int/str), а не Enum (Python 3.11+).
Синтаксис
class C(int, enum.ReprEnum): ...
Вопреки названию, ReprEnum трогает не repr, а str() и format(): repr остаётся «энумовским» (<Size.S: 'small'>), зато f-строка и str() дают значение подмешанного типа. Он появился в 3.11 потому, что тогда обычные смешанные перечисления (class Foo(str, Enum)) начали печататься как Foo.A, и IntEnum/StrEnum нужно было спасти от этой ломки. Наследуйтесь от него, если делаете собственный миксин (например с float) и хотите, чтобы член в строке выглядел как его значение.
Примеры
import enum
print(issubclass(enum.IntEnum, enum.ReprEnum)) # → True
import enum
class Size(int, enum.ReprEnum): BIG = 10
print(Size.BIG) # → 10
print(repr(Size.BIG)) # → <Size.BIG: 10>
import enum
class Plain(enum.Enum): BIG = 10
print(Plain.BIG) # → Plain.BIG
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности