РЕДАКТИРОВАТЬ: оказывается, это была просто ошибка, которая была исправлена на 3.7.1.
Если я создаю класс mixin и пытаюсь добавить его, чтобы добавить его к IntEnum
, яполучить эту ошибку:
>>> from enum import IntEnum
>>> class Mixin:
... pass
...
>>> class C(Mixin, IntEnum):
... A=1
... B=2
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\user\AppData\Local\Programs\Python\Python37\lib\enum.py", line 211, in __new__
enum_member = __new__(enum_class)
TypeError: object.__new__(C) is not safe, use int.__new__()
Это тоже не работает (та же ошибка):
from enum import IntEnum
class M: ...
class C(M, IntEnum): ...
class D(C):
A=1
B=2
Документы , кажется, указывают , что это возможнои он работает для обычного Enum
:
>>> from enum import Enum
>>> class Mixin:
... pass
...
>>> class D(Mixin, Enum):
... A=1
... B=2
...
>>>
Не уверен, является ли это ошибкой или ограничением IntEnum
.Что здесь происходит?