python - 修复 'new enumerations must be created as'

标签 python python-2.7 enums typeerror

我正在使用 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 类型定义了值被转换到哪个类,如果您需要 MyClassint,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, use int.__new__()

关于python - 修复 'new enumerations must be created as',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41051796/

相关文章:

python - 大 JSON 文件 : string search in dict values

python - 从 Mac OSX 10.8 中删除预装的 python

python - 使用 Python 进行字符翻译(如 tr 命令)

python - 使用 ATLAS 或 OpenBLAS 的 Numpy?

python - 提取多边形形状的子图像

javascript - 访问网站时如何查找浏览器发出的所有 JavaScript 请求

python - 在带有嵌套字典的 Python 中,我应该检查类型吗?我还可以使用什么其他方法?

c# - 使用反射和枚举来进行 MVC 应用程序访问的逻辑控制是否安全?

c++ - 基于不同枚举类值 union 的模板工厂

javascript - 迭代枚举时如何排除命名空间函数?