Python子类如何调用父类的同名函数且不覆盖原有逻辑?
实现方案
你需要在子类的同名方法中,通过super()调用父类的对应方法,执行完父类逻辑后再运行子类自定义的逻辑即可。
修改后的完整代码如下:
class Person: def __init__(self,p): self.p = p def printp(self): print(self.p) class Bob(Person): def printp(self): # 调用父类的printp方法 super().printp() print('letter') b = Bob('p') b.printp()
运行后输出结果如下,符合预期:
p letter
补充说明:
super()是Python面向对象中专门用于调用父类方法的语法,支持单继承、多继承场景下按照方法解析顺序(MRO)自动匹配对应的父类- 你也可以选择显式指定父类调用,写法为
Person.printp(self),但更推荐使用super(),后续修改父类名时不需要同步调整调用逻辑,兼容性更强。
内容的提问来源于stack exchange,提问作者Notebooked
相关产品推荐
相关产品推荐

