【发布时间】:2020-09-06 00:33:27
【问题描述】:
我已经询问了一些与我正在开发的游戏相关的问题。问题是在开发的时候出现的,其实和游戏本身没有关系。
我的代码中有一个方法(子类中的“调整大小”),它调用其超类中的等效方法(超类的“调整大小”)。
- 预期行为:超级调整大小调用 Super-do_rotozoom
- 发生了什么:称为 Sub-do_rotozoom 的超级调整大小
这是一个代码示例:
子类:
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()
我找到了一种解决方法,它涉及在子类方法do_rotozoom() 中调用super().do_rotozoom(),然后由super().resize() 调用。我还发现,在这种情况下,我可以删除 self.do_rotozoom() 行。
在这种情况下,这是一个非常容易解决的问题,但是在更复杂的情况下我该怎么办,例如,如果我需要在超类中使用其他变量而不是在子类中调用方法 do_rotozoom()另一个具体的实现?换句话说,我如何能够选择要在特定上下文中使用的方法?
通常您只能从子类中访问超方法,而不能从超类中访问超方法(不是超类,而是它自己的方法)。
我还没有找到更好的标题... :D
【问题讨论】:
-
“方法”用一个“e”拼写。
标签: python subclassing