为了账号安全,请及时绑定邮箱和手机立即绑定

在子类的另一个方法中调用超类的方法

在子类的另一个方法中调用超类的方法

qq_遁去的一_1 2023-07-18 15:02:12
我已经询问了一些与我正在开发的游戏相关的问题。该问题是在开发过程中出现的,但实际上与游戏本身无关。我的代码中有一个方法(子类中的“resize”),它调用其超类中的等效方法(超类的“resize”)。预期行为:超级调整大小调用 Super-do_rotozoom发生了什么:称为 Sub-do_rotozoom 的超级调整大小这是一个代码示例:子类:def do_rotozoom(self):    # do rotozoom stuff of subclassdef resize(self,factor):    super().resize(factor)    self.do_rotozoom()超类:def do_rotozoom(self):    #do rotozoom stuff of superclassdef resize(self,factor):    self.factor = factor    self.do_rotozoom()我找到了一个解决方法,其中涉及调用super().do_rotozoom()子类方法do_rotozoom(),然后由super().resize(). 我还发现,在这种情况下我可以删除该行self.do_rotozoom()。在这种情况下,这是一个非常简单的修复,但是在更复杂的情况下我会做什么,例如,如果我需要使用do_rotozoom()超类中的其他变量调用该方法,而不是在子类/另一个特定实现中调用该方法?换句话说,我如何能够选择在特定上下文中使用哪种方法?通常,您只能从子类访问超方法,但不能从超类访问超方法(不是超类的方法,而是它自己的方法)。我还没有找到更好的标题...:D
查看完整描述

2 回答

?
杨魅力

TA贡献1811条经验 获得超6个赞

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

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


查看完整回答
反对 回复 2023-07-18
?
不负相思意

TA贡献1777条经验 获得超10个赞

子类的定义就是它继承了超类的所有内容,除了它重写的方法和属性之外。

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

要么不要重写do_rotozoom,要么引用超类方法来super().do_rotozoom()实现您需要的行为。


查看完整回答
反对 回复 2023-07-18
  • 2 回答
  • 0 关注
  • 89 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信