【发布时间】:2022-01-19 22:52:48
【问题描述】:
super() 函数有助于访问父类的方法和属性,但在下面的代码中,我们为父类的属性 (name) 分配一个值,并为子类的属性 (name, age ) 另一个值。但是我想在子类中访问父类的属性(name),而不更改值。我该怎么办?
class Parent: #Parent class
def __init__(self,name):
self.name=name
def show(self):
print(self.name)
class Child(Parent): #child class
def __init__(self,name,age):
super().__init__(name)
self.age=age
def showName(self):
print(self.name,self.age)
child=Child("nin",12)
parent=Parent("ninad")
child.showName()
parent.show()
输出-
nin 12
ninad
【问题讨论】:
-
这是实例属性,它们不属于任何类,它们属于实例
-
我真的不明白你在问什么,你期望的输出是什么?
-
子类自动继承父类的所有属性。
Parent和Child没有单独的name属性。 -
扩展@Barmar 的评论,它是具有属性的对象。该对象只有一个
name。是父类初始化还是子类初始化无关紧要。 -
所有属性都附加到绑定到
self的实例上,不管这样做的方法是在Parent还是Child中定义的。Parent.__init__知道如何设置name属性,所以Child.__init__不必这样做。
标签: python inheritance