擅长:python、mysql、java
<p>不要使用<code>UserDict</code>类——您不需要它。正如文档所说,您可以直接对<code>dict</code>进行子类划分。</p>
<p>但是,您仍然需要<code>UserDict</code>模块,对于<a href="http://docs.python.org/library/userdict.html#UserDict.DictMixin" rel="nofollow">^{<cd4>}</a>:</p>
<p><strong>注意:</strong><code>DictMixin</code>虽然没有被正式弃用,但在Python 3中已被删除,建议在使用<code>collections.MutableMapping</code>的文档中使用它。然而,这有一个缺点——您需要实现更多的字典接口-<code>__delitem__</code>、<code>__getitem__</code>、<code>__iter__</code>、<code>__len__</code>和<code>__setitem__</code>。使用<code>DictMixin</code>,您只需实现您想要更改的那些,其余的使用默认实现。</p>
<pre><code>from UserDict import DictMixin
class MyDict(DictMixin, dict):
def __setitem__(self, key, value):
print key, value # just an example
# use intern(key) or whatever here
dict.__setitem__(self, key, value) # or
# super(MyDict, self).__setitem__(key, value)
m = MyDict()
m['a'] = 'b'
# a b
m.update({'a': 'c'})
# a c
</code></pre>
<p>它会自动让<code>update</code>按您的<code>__setitem__</code>使用您的<code>update</code>。</p>