有没有办法让自定义元类与enum34包(Python 3之前的版本)兼容?
import enum
import six
class MyMeta(type):
def __new__(cls, class_name, bases, class_dict):
print("Does something useful.")
return super(MyMeta, cls).__new__(cls, class_name, bases, class_dict)
@six.add_metaclass(MyMeta)
class MyClass(object):
def __init__(self, *args, **kwargs):
pass
MyEnum = enum.Enum('MyEnum', [('One', 1), ('Two', 2), ('Three', 3)], type=MyClass)
以上的代码在enum34模块中会抛出一个错误,错误发生在enum_class = super(EnumMeta, metacls).__new__(metacls, cls, bases, classdict)
这一行代码:
TypeError: metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases