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

Python中多继承派生类对象能否不使用super()访问指定基类方法?

可以访问!不过得用正确的语法

当然能做到啦,只是你设想的obj.c.save()这种写法行不通——因为c是obj的父类,并不是它的实例属性,所以没法直接这么调用。不过有个很直接的方法可以实现你的需求:直接通过c类来调用save方法,同时把obj作为参数传进去当self。

举个实际的代码例子:

class a:
    def save(self):
        print('a executed')
class b(a):
    def save(self):
        print('b executed')
class c(a):
    def save(self):
        print('c executed')
class d(b, c):
    def save(self):
        print('d executed')

obj = d()
# 调用c类的save方法
c.save(obj)  # 这行会输出 'c executed'

原理其实很简单:Python的实例方法本质上是类的函数,第一个参数self需要接收实例对象。平时我们写obj.save()的时候,Python会自动把obj作为self传进去;而当我们直接通过类调用方法时,就需要手动把实例传进去,这样c类的save方法就能正常执行啦。

如果是在d类的内部方法里想调用c的save,也可以用同样的逻辑:

class d(b, c):
    def save(self):
        print('d executed')
    def call_c_save(self):
        c.save(self)  # 在内部调用c的save

obj = d()
obj.call_c_save()  # 输出 'c executed'

内容的提问来源于stack exchange,提问作者Harrish Kumar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:04:43