• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

浅谈Python类的__getitem__和__setitem__特殊方法

python 搞代码 4年前 (2022-01-08) 24次浏览 已收录 0个评论

下面小编就为大家带来一篇浅谈Python类的__getitem__和__setitem__特殊方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

一个有点绕的例子,用PyScripter调试器步进跟踪可以看清楚对 象结构的具体细节。

对原作改变了一下,在未定义子对象属性时__getitem__中使用现成的__setitem__来定义。

 ## encoding:utf-8 """ 这个类继承了object, object是Python的最小单元,可以在Python的">>>"控制台用dir(objct)或者dir (__builtins__.object)命令查看它的属性,可以看到__setattr__, __new__...他们是python中任何对象都会具有的属性,你也可以dir(1)和dir(int)看看,可看到更多内容,在这里,1作为一个实例化的int对象出现。而这些__xxx__属性有什么用呢?在接下来的代码中,我们可以了解__getitem__和__setitem__有什么用 (这两个属性在dict<b style="color:transparent">来源gao@!dai!ma.com搞$$代^@码网</b>对象中非常重要) """ class WPUnit(object): def __init__(self): self._res={} def __setitem__(self,key,val): self._res[key]=val def __getitem__(self,key): if self._res.has_key(key): return self._res[key] else: r=WPUnit() self.__setitem__(key,r) return r a=WPUnit() a['a']['b']['c']['d']['e']['f']['g']=5 print a['a']['b']['c']['d']['e']['f']['g']
 >>> class testsetandget: kk = {}; def __getitem__(self, key): return self.kk[key]; def __setitem__(self, key, value): self.kk[key] = value; >>> a = testsetandget() >>> a['first'] = 1 >>> a['first'] 1 >>> a.__setitem__('second', 2) >>> a.__getitem__('second') 2 >>> a['second'] 2 >>>  

以上就是浅谈Python类的__getitem__和__setitem__特殊方法的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:浅谈Python类的__getitem__和__setitem__特殊方法
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址