В 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: в области значений отображаются только поля класса данных, а не имя класса данных.