我们假设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上的功能但反之亦然?
编辑 - 这是我从另一位作者继承的代码。解释是在python中使用mixin模式时,这是可接受的设计。你们确认不是。正如我在评论中提到的那样,我永远不会以这种方式进行面向对象的设计,我将重构代码。我对这种可能性感到开放,因为我不理解“mixin”模式,因此问题。还要感谢投票。
答案 0 :(得分:0)
A可以自己实例化吗?如果可以的话,它必须不依赖于C.在C上的B同上。作为概括,可实例化的类应该只依赖于它自己及其超类,而不是子类。
有一些可能的例外情况,超类可能需要知道它的子类,但由于(通常是不合需要的)耦合,这可能表明设计不佳。