Python中如何使用super()指定调用父类的特定实现?
让C类直接调用A类display方法、跳过B类的两种实现方式
方法一:直接调用A类的方法
直接通过A.display(self)的方式调用,完全绕过B类的实现,逻辑简单直接:
class A: def display(self): print("FOO") class B(A): def display(self): print("BAZ") class C(B): def display(self): A.display(self) # 直接指定调用A的display方法 C().display() # 输出结果:FOO
方法二:通过super指定跳过的类
利用super()的参数特性,明确指定从B类的下一个类开始查找方法(也就是A类),从而跳过B的实现:
class A: def display(self): print("FOO") class B(A): def display(self): print("BAZ") class C(B): def display(self): super(B, self).display() # 指定跳过B类,调用A的方法 C().display() # 输出结果:FOO
两种方法的区别:
- 方法一不受继承链变化影响,适合明确知道目标父类的场景;
- 方法二依赖Python的方法解析顺序(MRO),如果后续类的继承关系调整,可能需要同步修改指定的类,但更贴合面向对象的继承设计逻辑。
内容的提问来源于stack exchange,提问作者maxwell_rob33
相关产品推荐
相关产品推荐

