【发布时间】:2015-07-04 12:36:28
【问题描述】:
这个问题我真的不知道怎么表达,所以我试着用一个例子来解释一下。
假设我有三个 GUI 类:
- 基面类
- 详细的表面类
- 精灵类
它们都是相互独立的,它们之间没有继承关系。 现在我有一个函数“drag()”,它使表面/精灵可拖动,我想将此函数实现为所有三个的方法。
由于所有实现的代码完全相同,我发现重写代码很烦人、麻烦且不好。 到目前为止,我唯一想到的就是为它创建一个单独的类并继承这个类。但这似乎也不是要走的路。
非常感谢您的建议。
编辑
另一个设置稍有不同的示例 - 我有以下类:
- 底面
- 可拖动
- 可调整大小
- 事件处理程序
只有第一个是独立的,其他依赖于第一个(必须继承)。 最终用户应该能够毫不费力地在简单的 BaseSurface、实现可拖动的一种、一种具有可调整大小的、一种具有 eventHandler 的以及任何组合之间进行选择。 “不费吹灰之力”是指最终用户不必制作自定义类并继承所需的类并调用某些类共享的适当方法(init,更新,...)。
所以我能做的就是为每个可能的组合创建一个类,例如。 "BaseSurfaceDrag", "BaseSurfaceDragResize", ... 这很快就会变得一团糟。有什么不同的更好的方法?
【问题讨论】:
-
创建一个父类并让三个类继承它正是要走的路。这是类的预期用途。
标签: python class methods pygame multiple-inheritance