让我们假设A,B和C是类。 C继承自A和B,从而将它们用作mixin。正确使用python中的mixins
此时,A可以通过self.whatever访问B和C上的任何属性。 B可以通过self.whatever访问A和C上的任何属性。而C可以通过self.whatever访问A和B上的任何属性。
在python中使用这种“混合”模式时,有哪些应该“知道”如何与其他人交互?例如,C应该只在A/B中使用功能,反之则不然?或者应该A/B只使用C上的功能,但反之亦然?
编辑 - 这是我从另一位作者继承的代码。解释是在python中使用mixin模式时,这是可以接受的设计。你们确认事实并非如此。正如我在下面的评论中提到的,我永远不会用这种方式去讨论面向对象的设计,我会重构代码。我很乐意看到关于我不明白的“mixin”模式的可能性,因此提出了这个问题。也感谢您的反对票。
对于Python中的类如何工作,您似乎很困惑。你在类之间访问的例子并不合理。 – Marcin 2012-03-06 21:54:05
“Mixins”在Python中不存在(作为语法结构;模式可以在代码中实现)。这是直接的继承。 – 2012-03-06 22:03:01
@Marcin,我上面提到的*在技术上起作用。这不是我编写的代码,我试图给作者带来一些好处,因为Python中使用了mixin模式,这似乎并不理解。在其他面向对象技术中,我已经使用了上面列出的某些部分,甚至在技术上也不可能,即使它们是,它也会是可怕的面向对象设计。我将重构代码以解决它。 – 2012-03-06 22:30:32