UserDict.IdctMixin制作一个扩展的dict

http://book.51cto.com/art/201005/198784.htm
之前一直是继承dict,有些问题,如果以后有需要,可以使用一下这个


http://snipplr.com/view/6546/creating-dictionarylike-objects-in-python-using-dictmixin/


<ol><li class="li1"><div class="de1"><span class="st0">"""How to create a custom mappable container (dictionary-like) type in Python."""</span></div></li><li class="li1"><div class="de1"> </div></li><li class="li1"><div class="de1"><span class="kw1">from</span> <span class="kw3">UserDict</span> <span class="kw1">import</span> DictMixin</div></li><li class="li1"><div class="de1"> </div></li><li class="li1"><div class="de1"><span class="kw1">class</span> MyDict<span class="br0">(</span>DictMixin<span class="br0">)</span>:</div></li><li class="li1"><div class="de1">    <span class="co1"># MyDict only needs to implement getitem, setitem, delitem and keys (at a </span></div></li><li class="li1"><div class="de1">    <span class="co1"># minimum) and UserDict will provide the rest of the standard dictionary</span></div></li><li class="li1"><div class="de1">    <span class="co1"># methods based on these four.</span></div></li><li class="li1"><div class="de1">    <span class="co1">#</span></div></li><li class="li1"><div class="de1">    <span class="co1"># getitem and delitem should raise KeyError if no item exists for the given</span></div></li><li class="li1"><div class="de1">    <span class="co1"># key. getitem, setitem and delitem should raise TypeError if the given key</span></div></li><li class="li1"><div class="de1">    <span class="co1"># is of the wrong type.</span></div></li><li class="li1"><div class="de1"> </div></li><li class="li1"><div class="de1">    <span class="kw1">def</span> <span class="kw4">__getitem__</span><span class="br0">(</span><span class="kw2">self</span>, key<span class="br0">)</span>:</div></li><li class="li1"><div class="de1">        ....</div></li><li class="li1"><div class="de1"> </div></li><li class="li1"><div class="de1">    <span class="kw1">def</span> <span class="kw4">__setitem__</span><span class="br0">(</span><span class="kw2">self</span>, key, item<span class="br0">)</span>:</div></li><li class="li1"><div class="de1">        ....</div></li><li class="li1"><div class="de1"> </div></li><li class="li1"><div class="de1">    <span class="kw1">def</span> <span class="kw4">__delitem__</span><span class="br0">(</span><span class="kw2">self</span>, key<span class="br0">)</span>:</div></li><li class="li1"><div class="de1">        ....</div></li><li class="li1"><div class="de1"> </div></li><li class="li1"><div class="de1">    <span class="kw1">def</span> keys<span class="br0">(</span><span class="kw2">self</span><span class="br0">)</span>:</div></li><li class="li1"><div class="de1">        ....</div></li><li class="li1"><div class="de1"> </div></li><li class="li1"><div class="de1"><span class="co1"># You can now use your class as if it was a dict, using the standard container </span></div></li><li class="li1"><div class="de1"><span class="co1"># operators and dictionary methods.</span></div></li><li class="li1"><div class="de1"> </div></li><li class="li1"><div class="de1">d = MyDict<span class="br0">(</span><span class="br0">)</span></div></li><li class="li1"><div class="de1">d<span class="br0">[</span>key<span class="br0">]</span> = value</div></li><li class="li1"><div class="de1">d.<span class="me1">get</span><span class="br0">(</span>key<span class="br0">)</span></div></li><li class="li1"><div class="de1">d.<span class="me1">clear</span><span class="br0">(</span><span class="br0">)</span></div></li><li class="li1"><div class="de1">etc.</div></li></ol>


posted on 2010-08-17 21:39  lexus 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/lexus/archive/2010/08/17/1801849.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值