class Father:
def init(self, name):
self.name = name
print("name: %s" % self.name)
def getName(self):
return "Father %s" % self.name
# print("父类方法")
class Son(Father):
# 子类重写父类的构造方法
def init(self, name):
# 使用super继承父类构造方法
super().init(name)
self.name = name
print("hi")
# 子类重写父类的getName
def getSonName(self):
# 子类方法实现包含父类方法 使用super().父类方法
super().getName()
return "Son %s" % self.name
son = Son("runoob") # 继承父类的构造方法,打印name: runoob hi
print(son.getSonName()) # 为什么父类中的getName没输出???
子类重写了父类的方法了,除非子类不重新写getName
【以下回答由 GPT 生成】
问题原因是在子类的 getSonName()
方法中没有将父类的 getName()
方法的输出打印出来。需要在子类的 getSonName()
方法中添加 print(super().getName())
来输出父类的 getName()
方法。
修改后的代码如下:
class Father:
def __init__(self, name):
self.name = name
print("name: %s" % self.name)
def getName(self):
return "Father %s" % self.name
class Son(Father):
def __init__(self, name):
super().__init__(name)
self.name = name
print("hi")
def getSonName(self):
print(super().getName()) # 添加这一行来输出父类的getName()方法
return "Son %s" % self.name
son = Son("runoob")
print(son.getSonName())
运行结果为:
name: runoob
hi
Father runoob
Son runoob
这样就可以看到父类的 getName()
方法输出到了控制台。