首页 > 解决方案 > 在子类的另一个方法中调用超类的方法

问题描述

我已经询问了一些与我正在开发的游戏相关的事情。问题是在开发过程中出现的,但实际上与游戏本身无关。

我的代码中有一个方法(子类中的“调整大小”),它调用它的超类中的等效方法(超类的“调整大小”)。

这是一个代码示例:

子类:

def do_rotozoom(self):
    # do rotozoom stuff of subclass
def resize(self,factor):
    super().resize(factor)
    self.do_rotozoom()

超类:

def do_rotozoom(self):
    #do rotozoom stuff of superclass
def resize(self,factor):
    self.factor = factor
    self.do_rotozoom()

我找到了一种解决方法,其中涉及调用super().do_rotozoom()Subclass 方法do_rotozoom(),然后由super().resize(). 我还发现,在这种情况下我可以删除该行self.do_rotozoom()

在这种情况下,这是一个非常容易解决的问题,但是在更复杂的情况下,例如,如果我需要do_rotozoom()在超类中使用其他变量而不是在子类/另一个特定实现中调用该方法?换句话说,我如何能够选择我想在特定上下文中使用的方法?

通常,您只能从子类中访问超方法,但不能从超类中访问超方法(不是超类,而是它自己的方法)。

我还没有找到更好的标题...:D

标签: pythonsubclassing

解决方案


开发人员更喜欢组合而不是继承,它更易于管理。

我建议你做的是在你的子类中包含你的超类的一个实例,并在你想要的时候使用它。


推荐阅读