python - 在子类的另一个方法中调用超类的方法
问题描述
我已经询问了一些与我正在开发的游戏相关的事情。问题是在开发过程中出现的,但实际上与游戏本身无关。
我的代码中有一个方法(子类中的“调整大小”),它调用它的超类中的等效方法(超类的“调整大小”)。
- 预期行为:超级调整大小调用 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()
我找到了一种解决方法,其中涉及调用super().do_rotozoom()
Subclass 方法do_rotozoom()
,然后由super().resize()
. 我还发现,在这种情况下我可以删除该行self.do_rotozoom()
。
在这种情况下,这是一个非常容易解决的问题,但是在更复杂的情况下,例如,如果我需要do_rotozoom()
在超类中使用其他变量而不是在子类/另一个特定实现中调用该方法?换句话说,我如何能够选择我想在特定上下文中使用的方法?
通常,您只能从子类中访问超方法,但不能从超类中访问超方法(不是超类,而是它自己的方法)。
我还没有找到更好的标题...:D
解决方案
开发人员更喜欢组合而不是继承,它更易于管理。
我建议你做的是在你的子类中包含你的超类的一个实例,并在你想要的时候使用它。
推荐阅读
- c# - 用 C# 中 ComboBox.DataSource 中的数据填充 DataTable?
- python - 如何在 seaborn 图形级图中包装长刻度标签
- powerbi - Power BI:从第三个相关表中获取值
- css - 单击其他选项卡时如何使内容向后滑动?
- swift - 无法在 iPad 上对齐 TabBar 项目
- com - 如果我不发布 WICFactory(IWICImagingFactory*),会发生什么?
- view - 我下载了水晶视图报告,但是当我打开 vs 应用时我找不到它?
- flutter - 如何根据系统暗模式或颤动中的onclick事件更改主题模式和主题颜色
- react-native - 尝试在本机反应中使用历史推送时如何修复空白页面
- php - 优化 Laravel 查询 - 从 24 个查询到只有 1 个使用收集方法