Class Inheritance Error: Child object has no attribute 'a'
请考虑以下代码段
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | class parent(object): def __init__(self): self.a = 0 class child(parent): def __init__(self): super(parent, self).__init__() self.b = 9 def func(self): print(self.a, self.b) c = child() print(c.b) print(c.a) |
我期望的输出是:
9
0
但错误消息指出'child'对象没有属性'a'。
如果我改为使用parent init方法而不是super方法,那么我得到了我想要的输出。
1 | parent.__init__(self) |
我从其他帖子中读到,super是实现继承的推荐方法。 我的问题是如何通过使用super方法将init方法初始化的父类属性继承到子类中?
正如@eyllanesc在评论中提到的,这是一个错字。
应该在'child'对象上调用super()。
1 | super(child, self).__init__() |
在python 3中,您在init方法中对
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | class parent(object): def __init__(self): self.a = 0 class child(parent): def __init__(self): super().__init__() self.b = 9 def func(self): print(self.a, self.b) c = child() print(c.b) print(c.a) print(c.func()) |
输出:
1 2 3 | 9 0 0 9 |