Mixin
Python の、特に Python 2.3 以降および Python 3 では C3 linearization により多重継承した際のメソッド探索順は解決されるので、多重継承は有力な手法であり、実際にいくつか活用例がある。SocketServer モジュールは UDP および TCP ソケットサーバとして動作する UDPServer と TCPServer クラスの両方を備えている。通常、すべてのコネクションは同じプロセス内で処理されるが、ForkingMixIn と ThreadingMixIn という追加の mixin クラスが存在する。下記のように TCPServer を ThreadingMixIn により拡張すると、
ThreadingMixIn が TCPServer にコネクションごとにスレッドを生成する機能を追加する。あるいは、ForkingMixIn を用いると各新規のコネクションに対してプロセスが fork される。明らかに、スレッドを生成したりプロセスを fork する機能は単独では大して役に立たない。
この使用例では、mixin はソケットサーバとしての機能に影響することなく、基盤となる機能を選択可能な形で提供している。
Mix-inの理念は、クラスに機能を注入することである。機能ユニットをクラス(Mix-inクラス)として表現して、それを他のクラスにミックスできるようにすることである。機能ユニットはメソッドの集合体にされることが多い。Mix-inは、UMLクラス図にある汎化/特化および実現/実装の双方に該当しない継承の種類を表わしている概念であり、それはニーズ/インクルード(need/include)とも言われる。Mix-inの各言語での導入方法は非常に多様化しているので、その用法は曖昧である。
Mix-inクラスは、多重継承されることを前提にして、上位クラスのように振る舞って自身が内包する機能性を提供し、下位クラスはその機能性を利用する権利を得るが、その特化の義務までは負わない。特化(specialization)とはUMLクラス図のそれであり、Is-a関係や派生(subtyping)がそれに該当している。Mix-inクラスの継承関係では、上位(super)基底(basic)よりも親(parent)、下位(sub)派生(derived)よりも子(child)と言った方が適当になる。
Mix-inクラスの代表的形態はトレイト(trait)である。