在不同的类中实现相同的方法

时间:2015-04-26 00:36:10

标签: python class methods pygame multiple-inheritance

我真的不知道怎么说出这个问题,所以我试着用一个例子来解释它。

我们说我有三个GUI类:

  1. 基础表面类
  2. 详细表面等级
  3. 精灵等级
  4. 所有这些都是彼此独立的,它们之间没有继承。 现在我有一个功能"拖()"这使得表面/精灵可以拖动,我想将这个函数实现为所有这三个的方法。

    由于它是所有实现的完全相同的代码,我发现重写代码很烦人,麻烦和不好的做法。 到目前为止,我唯一想到的就是为它制作一个单独的类并继承这个类。但这似乎也不是一条路。

    我非常感谢你的一些建议。

    修改

    设置稍有不同的另一个例子 - 我有以下类:

    1. BaseSurface
    2. Dragable
    3. 可调整大小
    4. 事件处理程序
    5. 只有第一个是独立的,其他的依赖于第一个(必须是继承的)。 最终用户应该毫不费力地选择简单的BaseSurface,一个可实现可拖动,一个可调整大小,一个使用eventHandler,以及任何组合。通过"没有任何努力"我的意思是最终用户不应该制作自定义类并继承所需的类,并调用某些类共享的适当方法( init ,update,...)。

      所以我能做的就是为每种可能的组合制作一个类,例如。  " BaseSurfaceDrag"," BaseSurfaceDragResize",... 这会很快变得凌乱。对此有何不同和更好的方法?

1 个答案:

答案 0 :(得分:1)

这正是您应该使用父类的情况。在这两种情况下,您的父类(逻辑上)应该类似于:

npm install

然后你的每个其他类继承自

class Drawable(object):
    def drag(self, *args, **kwargs):
        """Drag and drop behavior"""
        # Your code goes here

在第二种情况下,您拥有的是接口,因此您可以在逻辑上执行以下操作:

class BaseSurface(Drawable):
    # stuff

class DetailedSurface(Drawable):
    # stuff

class Sprite(Drawable):
    # stuff