如何在Python中强制调用父类自身方法,忽略子类重写
在Python中强制调用父类方法(忽略子类重写)
要实现类似PHP中self::强制调用父类自身方法的效果,你可以直接通过父类类名调用目标方法,并将当前实例作为第一个参数传入,以此绕过Python的方法解析顺序(MRO),完全忽略子类的重写逻辑。
修改后的代码示例
class Dog: def sound(self): # 直接调用Dog类的prepare方法,传入当前实例 Dog.prepare(self) print('au au!') def prepare(self): print('preparando parent!') class Boxer(Dog): def sound(self): super().sound() def prepare(self): print('preparando box!') dog = Boxer() dog.sound()
输出结果
preparando parent! au au!
原理说明
- 原代码中
self.prepare()会根据实例的实际类型(Boxer)查找方法,因此会调用子类重写后的prepare。 - 而
Dog.prepare(self)直接指定调用Dog类定义的prepare方法,无论当前实例是哪个子类的对象,都会执行父类的方法逻辑,完全匹配你需要的行为。
内容的提问来源于stack exchange,提问作者José Victor
相关产品推荐
相关产品推荐

