mixin は継承のように見えますが、合成のようなものだと理解しています。(編集:ではなく mixin で
考える傾向があります。)
精神的には、mixin を使用するときに次のようなことを言っています。 (である) giving additional functionality/attributes
giving another is-a relationship
そして、私は何度か読みましたが、継承よりも構成を好むべきです。
mixin の代わりにストレート コンポジションを使用することもできますが、mixin は何のためにあるのでしょうか?
推測する必要がある場合、それは my_instance.foo() が my_instance.another_instance.foo() よりも簡単だからですか?
(mixin に foo() がある場合は my_instance.foo() を使用できます。別のインスタンスを my_instance の属性として合成する場合は my_instance.another_instance.foo() が必要です)
他に理由はありますか?
編集:
ですから、私はそれが has-a だと感じていますが、mixin はまだ is-a の関係です。is-a here is、よりクリーンなインターフェースを使用すると得られる利点があります。それが私がデルナンの答えを解釈する方法です。