【发布时间】:2012-03-06 21:50:58
【问题描述】:
假设 A、B 和 C 是类。 C 继承自 A 和 B,从而将它们用作 mixins。
此时,A 可以通过 self.whatever 访问 B 和 C 上的任何属性。 B 可以通过 self.whatever 访问 A 和 C 上的任何属性。而 C 可以通过 self.whatever 访问 A 和 B 上的任何属性。
在python中使用这种“混合”模式时,有哪些好的文章,或者是否有共识,哪些应该“知道”如何与其他人交互?例如,C 是否应该只使用 A/B 中的功能,反之则不行?还是应该 A/B 只使用 C 上的功能而不是反之?
EDIT - 这是我从另一位作者那里继承的代码。解释是在 python 中使用 mixin 模式时,这是可以接受的设计。你们确认不是。正如我在下面的评论中提到的,我永远不会以这种方式进行面向对象的设计,我将重构代码。我对可能存在一些我不理解的“mixin”模式持开放态度,因此提出了这个问题。也感谢投反对票。
【问题讨论】:
-
您似乎对 Python 中的类如何工作感到非常困惑。您的类之间访问的示例没有真正意义。
-
“混合”在 Python 中不存在(作为一种句法结构;该模式可以在代码中实现)。这是直接继承。
-
@Marcin,我上面提到的确实在技术上有效。这不是我编写的代码,我试图为作者提供一些怀疑的好处,因为 Python 中使用了我似乎不理解的 mixin 模式。在我使用的其他面向对象技术中,我上面列出的某些部分在技术上甚至是不可能的,即使它们是,这将是可怕的面向对象设计。我将重构代码以使其理顺。
标签: python inheritance mixins