欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺談Python類的__getitem__和__setitem__特殊方法

 更新時(shí)間:2016年12月25日 11:36:51   投稿:jingxian  
下面小編就為大家?guī)?lái)一篇淺談Python類的__getitem__和__setitem__特殊方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

一個(gè)有點(diǎn)繞的例子,用PyScripter調(diào)試器步進(jìn)跟蹤可以看清楚對(duì) 象結(jié)構(gòu)的具體細(xì)節(jié)。

對(duì)原作改變了一下,在未定義子對(duì)象屬性時(shí)__getitem__中使用現(xiàn)成的__setitem__來(lái)定義。

## encoding:utf-8
"""
這個(gè)類繼承了object, object是Python的最小單元,可以在Python的">>>"控制臺(tái)用dir(objct)或者dir (__builtins__.object)命令查看它的屬性,可以看到__setattr__, __new__...他們是python中任何對(duì)象都會(huì)具有的屬性,你也可以dir(1)和dir(int)看看,可看到更多內(nèi)容,在這里,1作為一個(gè)實(shí)例化的int對(duì)象出現(xiàn)。而這些__xxx__屬性有什么用呢?在接下來(lái)的代碼中,我們可以了解__getitem__和__setitem__有什么用 (這兩個(gè)屬性在dict對(duì)象中非常重要)
"""

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 
>>>  

以上就是小編為大家?guī)?lái)的淺談Python類的__getitem__和__setitem__特殊方法全部?jī)?nèi)容了,希望大家多多支持腳本之家~

相關(guān)文章

最新評(píng)論