ホームページ  >  記事  >  バックエンド開発  >  PythonプログラミングにおけるMixinデザインパターンの使い方の解説

PythonプログラミングにおけるMixinデザインパターンの使い方の解説

WBOY
WBOYオリジナル
2016-07-06 13:29:581230ブラウズ

Mixin モードは、Python でよく使用されるモードであり、適切かつ合理的なアプリケーションにより、コードの再利用とコード構造の合理的な整理という目的を達成できます。

Python の Mixin モードは、多重継承を通じて実装できます。たとえば、ネストされた構造を持つ単純なデータ コンテナーをカスタマイズします。

リーリー
SimpleItemContainer は Python の組み込み型 Dict を使用してデータを保存しますが、これまでのところ、対応するデータにアクセスしたい場合は、内部の辞書を直接呼び出す必要があります。ネイティブ辞書。もちろん、完全な辞書インターフェースを最初から実装することもできますが、カスタマイズされた同様のコンテナーごとに辞書インターフェースを含めるのは間違いなく機能しません。Python の組み込み UserDict.DictMixin を使用するのが良い方法です。

UserDictからDictMixinをインポート

リーリー

最小の辞書インターフェイスを実装し、DictMixin を継承して Mixin モードを実装することにより、完全なネイティブ辞書の動作を簡単に取得できます。次の表の構文、get、has_keys、iteritems、itervalues、さらには反復可能なプロトコルの実装と一連のメソッドと実装。

Mixin は、Django や Django REST フレームワークなどの多くのフレームワークで一般的に使用され、API やビューセットを定義するときに、多重継承を通じていくつかの機能を利用できます。 もちろん、Mixin モードを悪用することはできません。少なくとも、新しく定義したクラスを汚染し、場合によっては MRO の問題を引き起こす可能性がありますが、一般にインターフェイス/プロトコルを通じて実装されることが期待される関数など、いくつかの基本的な単一関数を配置します。 、Mixin へモジュールにはまだ良い選択肢があります:

リーリー

実際、全体の理解は、組み合わせによってより多くの機能を取得することに他なりません。これは、「できる」という意味を強調する C# や Java のインターフェースに似ていますが、比較するとはるかに単純であり、必要はありません。明示的な制約とミックスイン モジュールには独自の実装が付属しています。これを使用する場合、通常、mixin クラスは親クラスの右側に配置され、これが典型的な多重継承ではなく、特殊な種類の多重継承であることを強調しますが、基本クラスの継承に基づいており、付随的に複数の多重継承を使用します。継承された関数は、このサブクラスに何らかの特徴を追加し、他の機能を追加します。 Mixin のクラス関数が単一かつ固有であることを確認してください。混合後、新しいクラスの MRO ツリーは実際には比較的単純になり、混乱を引き起こしません。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。