Python函数重写时调用父类方法的方式及方案合理性咨询
嘿,我来帮你把这几个问题理清楚,还有你提供的代码示例也一起分析下~
在调用方法时访问父类方法的方式
在Python里,想要访问父类的方法,主要有两种常用方式:
- 直接通过父类名称调用:直接写出父类的名字,然后调用对应的方法,同时把当前实例(
self)传进去。 - 使用
super()函数:这是更推荐的方式,尤其是在多继承场景下,它会自动帮你处理继承链,避免手动指定父类带来的问题。
函数重写后访问父类方法的实现
当子类重写了父类的方法,但又想在子类方法里调用父类的同名方法时,就可以用上面说的两种方式。
先看你给出的代码:
class Parent: def myMethod(self): print 'Calling parent method' class Child(Parent): def myMethod(self): print 'Calling child method' c = Child() c.myMethod()
这段代码确实属于函数重写——子类Child重新定义了父类Parent的myMethod方法,当你调用c.myMethod()时,会执行子类的方法,输出Calling child method。但如果你的需求是在重写的同时访问父类方法,那这段代码就没做到这一点,它只是单纯覆盖了父类方法。
如果想要在子类方法里调用父类的myMethod,可以这样修改:
方式一:直接用父类名调用
class Parent: def myMethod(self): print 'Calling parent method' class Child(Parent): def myMethod(self): Parent.myMethod(self) # 调用父类方法 print 'Calling child method' c = Child() c.myMethod()
运行后会先输出Calling parent method,再输出Calling child method。
方式二:使用super()函数
class Parent: def myMethod(self): print 'Calling parent method' class Child(Parent): def myMethod(self): super(Child, self).myMethod() # Python 2.x 写法 # Python 3.x 可以简化为 super().myMethod() print 'Calling child method' c = Child() c.myMethod()
这种方式更灵活,尤其是当继承关系变动时,不需要手动修改父类名称,维护起来更方便。
总结一下:你给出的代码是正确的函数重写示例,但如果需要在重写时访问父类方法,就需要添加调用父类方法的代码哦~
内容的提问来源于stack exchange,提问作者midhun pc
相关产品推荐
相关产品推荐

