__setitem__() __getitem__() __delitem__()
阿新 • • 發佈:2018-11-06
#item系列 和物件使用[]訪問值有聯絡 #obj={'k':'v'} #print(obj) #print(obj['k']) class B: def __getitem__(self, item): #print('執行我了',item) #return 'bbb' return getattr(self,item) #getattr(object, name[,default]) #getattr() 函式用於返回一個物件屬性值。 #object -- 物件。 #name -- 字串,物件屬性。#default -- 預設返回值,如果不提供該引數,在沒有對應屬性時,將觸發 AttributeError。 #獲取物件object的屬性或者方法 def __setitem__(self, key, value): #print(key,value) setattr(self,key,value) # #object -- 物件。 #name -- 字串,物件屬性。 #value -- 屬性值。 def __delitem__(self, key): print(key)#這樣並沒有真的刪除b['k'] delattr(self,key)#delattr 函式用於刪除屬性。 # #object -- 物件。 #name -- 必須是物件的屬性。 b=B() b['k']='value'#物件['鍵']=值 會呼叫__setitem__()方法 print(b.k) print(b['k'])#物件['鍵']呼叫__getitem__()方法 #現在要刪除b['k'] del b['k']#del 物件['鍵']呼叫__delitem__()方法 print(b['k'])