我将 mixin 理解为看起来像继承但更像是组合的东西。
(编辑:我倾向于giving additional functionality/attributes
用 mixin 而不是giving another is-a relationship
.)
在心理上,当我使用 mixin 时,我会说这样的话:我给你这个 mixin 你缺少了,而不是你实际上也是这个 mixin 类型。 (是一个)
我读了几次,你应该更喜欢组合而不是继承。
我们可以直接使用组合而不是 mixin,mixin 是干什么用的?
如果我不得不猜测,那是因为 my_instance.foo() 比 my_instance.another_instance.foo() 更容易?
(如果 mixin 有 foo(),则可以使用 my_instance.foo(),将 another_instance 合成为 my_instance 的属性时需要 my_instance.another_instance.foo())
还有其他原因吗?
编辑:
因此,即使我觉得它是 has-a,mixin 仍然是 is-a 关系。并在您使用 is-a 时获得的好处是,界面更简洁。这就是我如何解释德尔南的回答。