Сообщить об ошибке.

Наследование перечислений от классов данных в Python

Перечисления enum, наследуемые от dataclass

В Python 3.12 добавлена ​​поддержка наследования перечислений enum от классов данных.

При наследовании от класса данных dataclasses в __repr__() опускает имя унаследованного класса. Например:

from dataclasses import dataclass, field
from enum import Enum

@dataclass
class CreatureDataMixin:
    size: str
    legs: int
    tail: bool = field(repr=False, default=True)

class Creature(CreatureDataMixin, Enum):
    BEETLE = 'small', 6
    DOG = 'medium', 4

>>> Creature.DOG
# <Creature.DOG: size='medium', legs=4>

Чтобы использовать стандартную функцию repr() необходимо задать аргументу repr=False в dataclasses.dataclass().

Изменено в Python 3.12: в области значений отображаются только поля класса данных, а не имя класса данных.