Не удается расширить Python IntEnum классом Mixin - PullRequest
2 голосов
/ 29 марта 2019

РЕДАКТИРОВАТЬ: оказывается, это была просто ошибка, которая была исправлена ​​на 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.Что здесь происходит?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...