我正在使用 Python 2 并有以下类(class)
import enum
class MyClass(object):
pass
@enum.unique
classMyEnum(enum.IntEnum, MyClass):
A = 1
B = 2
当我运行这段代码时,出现以下错误:
File "C:\Python27\lib\site-packages\enum\__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)`
我经常使用 Python,但我必须承认我从未真正投入其中。我真的不知道发生了什么。我不太确定如何阅读此错误。有人可以帮我解决这个问题吗?
最佳答案
错误是因为您需要在 Enum
类之前列出 MixinType
,例如:
class FunEnum(int, Enum):
A = 1
B = 2
但由于您已经在使用 intEnum
(它已经是一个混合枚举),您不想混合其他类型,对吗?所以你可以简单地使用:
@enum.unique
class FunEnum(enum.IntEnum):
A = 1
B = 2
mixin 类型定义了值被转换到哪个类,如果您需要 MyClass
和 int
,Python 如何解决这个问题?因此尝试它会引发另一个错误:
@enum.unique
class FunEnum(str, enum.IntEnum):
A = 1
B = 2
TypeError: multiple bases have instance lay-out conflict
或
class MyClass(object):
pass
@enum.unique
class FunEnum(MyClass, enum.IntEnum):
A = 1
B = 2
TypeError:
object.__new__(FunEnum)
is not safe, useint.__new__()
关于python - 修复 'new enumerations must be created as',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41051796/