fla*_*urn 8 python enums typeerror python-2.7
我正在使用 Python 2 并且有以下课程
import enum
class MyClass(object):
pass
@enum.unique
classMyEnum(enum.IntEnum, MyClass):
A = 1
B = 2
Run Code Online (Sandbox Code Playgroud)
当我运行此代码时,出现以下错误:
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)`
Run Code Online (Sandbox Code Playgroud)
我经常使用 Python,但我必须承认我从未真正投入其中。我真的无法弄清楚发生了什么。我不太确定如何阅读此错误。有人可以帮我解决这个问题吗?
该错误是因为您需要在课程MixinType之前列出Enum,例如:
class FunEnum(int, Enum):
A = 1
B = 2
Run Code Online (Sandbox Code Playgroud)
但由于您已经在使用intEnum(这已经是混合枚举),您不想混合使用另一种类型,对吗?所以你可以简单地使用:
@enum.unique
class FunEnum(enum.IntEnum):
A = 1
B = 2
Run Code Online (Sandbox Code Playgroud)
MyClassmixin 类型定义了值将转换为哪个类,如果需要的话,Python 如何解决这个问题int?因此尝试它会引发另一个错误:
@enum.unique
class FunEnum(str, enum.IntEnum):
A = 1
B = 2
Run Code Online (Sandbox Code Playgroud)
类型错误:多个基地有实例布局冲突
或者
class MyClass(object):
pass
@enum.unique
class FunEnum(MyClass, enum.IntEnum):
A = 1
B = 2
Run Code Online (Sandbox Code Playgroud)
类型错误:
object.__new__(FunEnum)不安全,请使用int.__new__()