在 subclass 的另一个方法中调用 super class 的方法

Call the method of the super class in an other method of the subclass

我已经询问过与我正在开发的游戏相关的问题。开发过程中出现的问题,其实与游戏本身无关

我的代码中有一个方法('resize' in a subclass)调用它的 super class 中的等效方法('resize' of the superclass).

这是一个代码示例:

亚class:

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

超级class:

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

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

在这种情况下,这是一个非常简单的修复,但在更复杂的情况下我会怎么做,例如,如果我需要用 super[=51] 中的其他变量调用方法 do_rotozoom() =]比我做的subclass/another具体实现?换句话说,我如何才能 select 我想在特定上下文中使用哪种方法?

通常你只能从子class到达super-methods,但不能从super-methods(不是它的超级class而是它自己的方法)超级class.

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

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

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

子类的定义是它继承超类的所有内容除了它覆盖的方法和属性。

子类可以使用 super() 引用其超类及其方法实现,就像您在示例中所做的那样。

要么不要覆盖 do_rotozoom,要么使用 super().do_rotozoom() 引用超类方法,这是您需要的行为。