Python父类实例变量

1 投票
1 回答
1454 浏览
提问于 2025-04-17 22:54

我有一个叫做 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。我想要实现的是能够创建带参数的对象。这些参数用来更新父类 parent 中继承的变量 p1p2,还有它自己独有的实例变量 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)

相关问题:

1 个回答

5

你需要把 p1p2 传递给父类的构造函数:

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

撰写回答