为什么父类中的getName没输出

子类重写父类的构造方法

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() 方法输出到了控制台。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^