Python Glossary English

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