【发布时间】:2018-04-20 17:06:36
【问题描述】:
我正在尝试编写一个插件环境,我需要在其中对未知数量的类进行多重继承。因此,我选择使用类型类创建:
class A(object):
def __init__(self,s):
self.a="a"
def testA(self,x):
print(x)
class B(object):
def __init__(self,s):
self.b="b"
def testA(self,x):
print(x)
C = type('C', (A,B), {})
x= C("test")
print x.b
当我运行上面的代码时,我得到了错误:
AttributeError: 'C' object has no attribute 'b'
这是因为当 C 类的实例初始化时,只有 A 类的 init 正在运行。我的问题是如何让 C 类在初始化 C 类的实例时同时运行 A 类的 init 和 B 类的 init .我确实意识到,如果我有像下面这样的 C 类,它会起作用:
class C(A,B):
def __init__(self,s):
A.__init__(self,s)
B.__init__(self,s)
但是,鉴于我需要继承的类的动态列表,这将不起作用。
【问题讨论】:
-
使用
super(),它正是针对这种情况而设计的。
标签: python class multiple-inheritance