/ / Arreglar 'las nuevas enumeraciones deben crearse como' - python, python-2.7

Arreglar 'las nuevas enumeraciones deben crearse como' - python, python-2.7

Estoy trabajando en python 2 y tener una clase siguiente

import enum

class MyClass(object):
pass

@enum.unique
classMyEnum(enum.IntEnum, MyClass):
A = 1
B = 2

Cuando ejecuto este código obtengo el siguiente error:

  File "C:Python27libsite-packagesenum__init__.py", line 506, in _get_mixins_
raise TypeError("new enumerations must be created as "
TypeError: new enumerations must be created as `ClassName([mixin_type,] enum_type)`

Trabajo con python regularmente peroDebo admitir que nunca me sumergí en eso. No puedo realmente averiguar qué está pasando. No estoy realmente seguro de cómo leer este error. ¿Alguien me puede ayudar con esto?

Respuestas

0 para la respuesta № 1

El error se debe a que necesita listar el MixinType antes de su clase Enum, como:

class FunEnum(int, Enum):
A = 1
B = 2

Pero como ya estas usando intEnum (que ya es una enumeración mixta) no quieres mezclar en otro tipo, ¿no? Así que simplemente puedes usar:

@enum.unique
class FunEnum(enum.IntEnum):
A = 1
B = 2

El tipo de mezcla define a qué clase se convierten los valores y cómo Python puede resolver esto si lo desea. MyClass y int? Por lo tanto, intentarlo arroja otro error:

@enum.unique
class FunEnum(str, enum.IntEnum):
A = 1
B = 2

TypeError: varias bases tienen conflicto de distribución de instancia

o

class MyClass(object):
pass

@enum.unique
class FunEnum(MyClass, enum.IntEnum):
A = 1
B = 2

Error de tecleado: object.__new__(FunEnum) no es seguro, usar int.__new__()