0

这可能是一个非常基本的 OOP 问题:

我有 2 个不在同一层次结构中的类。但是这两个类都有一些在其代码中相同的方法。这些方法实现了它们类的“UI”。我打算将这些方法移动到一个 mixin 中,并让两个类都继承该 mixin。

问题是:这些方法当前需要引用其类的属性(因为它们本质上是类的 UI):例如:它们都引用self.MyVar(),在 A 类和 B 类中定义不同。

在这种情况下,我该如何构建我的 mixin?

4

1 回答 1

1

self.MyVar()即使没有实现mixin 也可以调用,将使用继承对象的实现(首先):

class Mixin(object):
    def talk(self):
        print self.get_message()

class Inheritor(Mixin):
    def get_message(self):
        return "I'm inheriting"

i = Inheritor()
i.talk()
# prints "I'm inheriting"

顺便说一句,即使Mixin实施get_message了,这也会起作用。

每次你这样做时,Python 都会按照类的“方法解析顺序”定义的顺序进行self.something()查找:something

print Inheritor.__mro__
(<class '__main__.Inheritor'>, <class '__main__.Mixin'>, <type 'object'>)
于 2013-09-05T19:51:29.757 回答