我有一个名为parent
的父类,它是这样的:
class parent(object):
def __init__(self,p1,p2):
super(parent,self).__init__()
self.p1= p1
self.p2= p2
我有另一个子类,如下所示:
class child(parent):
def __init__(self,p1,p2,p3):
super(child,self).__init__()
self.p1 = p1
self.p2 = p2
self.p3 = p3
此子类有一个名为p3
的额外实例变量。我想要做的是能够创建带参数的对象。这些参数用于更新类p1 & p2
的继承变量parent
及其自己的实例变量p3
。但是当我运行上述内容时,我收到错误:
if __name__ == "__main__":
p1 = parent('p1_parent','p2_parent')
p2 = child('p1_child','p1_child','p1_child')
错误:
TypeError: __init__() takes exactly 3 arguments (1 given)
答案 0 :(得分:3)
您需要将p1
和p2
传递给父类构造函数:
super(child, self).__init__(p1, p2)
示例:
class parent(object):
def __init__(self,p1,p2):
super(parent, self).__init__()
self.p1= p1
self.p2= p2
class child(parent):
def __init__(self,p1,p2,p3):
super(child,self).__init__(p1, p2)
self.p3 = p3
child1 = child(1,2,3)
print child1.p1, child1.p2, child1.p3
打印:1 2 3