5.12 UserDict -- 辞書オブジェクトのためのクラスラッパー

このモジュールは 最小限のマッピングインターフェイスをすでに持っているクラスのために、 すべての辞書メソッドを定義しているmixin、DictMixinを定義しています。これによって、shelveモジュールのような辞書の代わりをする必要があるクラスを書くことが非常に簡単になります。

このモジュールではUserDictクラスを定義しています。これは辞書オブジェクトのラッパーとして 動作します。これはdict(Python 2.2から利用可能な機能です)によって置き換えられています。 dictの導入以前に、UserDictクラスは辞書風のサブクラスをオーバライドや新メソッドの 定義によって作成するために使われていました。

UserDictモジュールはUserDictクラスとDictMixinを定義しています:

クラス UserDict( [initialdata])
辞書をシミュレートするクラス。インスタンスの内容は通常の辞書に保存され、UserDictインスタンスのdata属性を通してアクセスできます。initialdataが与えられれば、dataはその内容で初期化されます。他の目的のために使えるように、initialdataへの参照が保存されないことがあるということに注意してください。 注意: 後方互換性のために、UserDictのインスタンスはイテレート可能ではありません。

クラス IterableUserDict( [initialdata])
UserDictのイテレーションをサポートするサブクラス (使用例: for key in myDict).

マッピングのメソッドと演算(節3.8を参照)に加えて、UserDictIterableUserDictインスタンスは次の属性を提供します:

data
UserDictクラスの内容を保存するために使われる実際の辞書。

クラス DictMixin( )
__getitem____setitem____delitem__およびkeys といった最小の辞書インタフェースを既に持っているクラスのために、全ての辞書メソッドを定義する mixin です。

このmixinはスーパークラスとして使われるべきです。上のそれぞれのメソッドを 追加することで、より多くの機能がだんだん追加されます。 例えば、__delitem__ 以外の全てのメソッドを定義すると、使えないのは poppopitem だけになります。

4 つの基底メソッドに加えて、__contains____iter__ およびiteritemsを定義すれば、順次効率化を果たすことができます。

mixin はサブクラスのコンストラクタについて何も知らないので、 __init__()copy() は定義していません。

ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。