ここに示されているUserDict.pyは、組み込みを厳密にエミュレートしますdict。たとえば、次のようになります。
>>> class m(dict):
... def __missing__(self, key): return key + key
...
>>> a=m()
>>> a['ciao']
'ciaociao'
__missing__ビルトインをサブクラス化するときに欠落しているキーを処理するための特別なメソッドをオーバーライドできるのと同じようにdict、それをサブクラス化するときにオーバーライドできますUserDict。
dictの公式Pythonドキュメントはここにあり、彼らはこう言っています:
バージョン2.5の新機能:dictのサブクラスがメソッド__missing__()を定義している場合、キーキーが存在しない場合、
d[key]操作はキーキーを引数としてそのメソッドを呼び出します。次に
、キーが存在しない場合、d[key]操作は、呼び出しによって返された、または発生したものをすべて返したり、発生させたりします。__missing__(key)他の操作やメソッドはを呼び出しません
__missing__()。__missing__()定義されていない場合、KeyErrorが発生します。
__missing__()メソッドである必要があります。インスタンス変数にすることはできません。例については、を参照してくださいcollections.defaultdict。