Отсутствие функций @property из metaclas в моем Enum, что я делаю не так?
Мне не очень нравится деталь реализации от Django ChoicesMeta
, поэтому я хотел создать свой собственный метакласс enum, который бы исправил это поведение. По сути, вот что я написал:
from django.db.models.enums import ChoicesMeta as DjangoChoicesMeta
class ChoicesMeta(DjangoChoicesMeta):
def __new__(metacls, classname, bases, classdict, **kwds):
# Here the code to fix the behavior I don't like
return super().__new__(metacls, classname, bases, classdict, **kwds)
class ChoiceEnum(Enum, metaclass=ChoicesMeta):
pass
class SomeEnum(ChoiceEnum)
ONE = "some enum value 1"
TWO = "some enum value 2"
Но затем, когда я захотел использовать свойство .choices
, которое происходит из django.db.models.enums.ChoiceMeta
, я получил AttributeError
:
File "/usr/lib64/python3.10/enum.py", line 437, in __getattr__
raise AttributeError(name) from None
AttributeError: values
несмотря на то, что я могу получить доступ к свойству .__members__
, которое исходит от родителя ChoiceMeta
EnumMeta
.
Может кто-нибудь подскажет, что я делаю не так?