当我尝试从父类中创建一个类,以使子类继承“ self”时,出现以下错误:
TypeError: Error when calling the metaclass bases metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases
class A(object):
create_proxy = False
def __init__(self, *args, **kwargs):
super(A, self).__init__(*args, **kwargs)
if self.create_proxy:
class Proxy(SomeMixin, self):
pass
[...]
我确信这是有可能的。有什么建议么?
进行以下更改
...
if self.create_proxy:
class Proxy(SomeMixin, A): #use class name instead of self
pass
...
还要确保它SomeMixin
是的子类object
,否则将导致它的元类冲突。
class SomeMixin(object):
pass
class A(object):
create_proxy = True #False
def __init__(self, *args, **kwargs):
super(A, self).__init__(*args, **kwargs)
if self.create_proxy:
class Proxy(SomeMixin, A):
pass
a = A() #test
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句