我需要一个双重继承的类,它是一个枚举类型,但也支持我的自定义方法。
这是上下文:
但我遇到了以下错误:
import abc
from enum import Enum
class MyFirstClass(abc.ABC):
@abc.abstractmethod
def func(self):
pass
class MySecondClass(Enum, MyFirstClass):
VALUE_1 = 0
VALUE_2 = 1
def func(self):
return 42
MySecondClass
的声明会产生以下错误:
TypeError: metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases
我尝试应用这个Stack Overflow的解决方案,按照以下步骤进行:
class MyMetaClass(type(Enum), type(MyFirstClass)):
pass
class MyFinalClass(Enum, MyFirstClass, metaclass=MyMetaClass):
VALUE_1 = 0
VALUE_2 = 1
def func(self):
return 42
但我遇到了以下错误:
TypeError: new enumerations should be created as `EnumName([mixin_type, ...] [data_type,] enum_type)`
这是一个特定于枚举
类型的问题,还是我对元类有什么理解上的漏洞?
FirstClass
设计为抽象基类。 - chepnerABCEnumMeta
。 - Ethan Furman