You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:05:17