Python中如何模拟类型转换实现子类对象调用父类方法?
在Python中调用被子类覆盖的父类方法
注:此问题为重复问题,另一线程中有补充解答;因原标题未准确体现需求,已修改原标题为《Python中调用基类方法》(原标题:Python中子类转父类的等效方法)。
你说得对,Python确实没有类似Java里那种强制类型转换来调用父类方法的语法,但我们有几种简单的等效方式来实现你想要的效果——调用被子类覆盖的父类方法。
先把你的示例类结构写清楚,方便后续演示:
class sup: def method(self): print("This is the parent class method") class sub(sup): def method(self): print("This is the child class method")
假设我们创建了一个子类实例:
obj = sub()
方法一:直接通过父类名调用方法并传入子类实例
这是最直接的方式,Python的类方法本质上是绑定到类的函数,第一个参数self需要我们手动传入实例对象。所以你可以直接用父类名调用目标方法,把子类实例传进去:
sup.method(obj) # 输出:This is the parent class method
方法二:在子类内部使用super()函数(适合子类方法内调用)
如果是在子类的方法内部想要调用父类的同名方法,Python提供了super()函数来简化这个操作,它会返回父类的代理对象,通过这个对象就能调用父类的方法:
class sub(sup): def method(self): print("This is the child class method") # 调用父类的method方法 super().method() obj = sub() obj.method() # 输出: # This is the child class method # This is the parent class method
这两种方式都能达到你想要的“调用父类method而非子类method”的效果,完全替代Java里强制类型转换的思路。
内容的提问来源于stack exchange,提问作者Ilab Sentuser
相关产品推荐
相关产品推荐

