通過中括號取值obj[item]
觸發它的執行,無論item是否存在。
通過中括號賦值obj[key] = value
觸發它的執行,無論key是否存在。
通過中括號刪除值del obj[key]
觸發它的執行,無論key是否存在。
class dog:
head = 1
def __getitem__(self, item):
print('getitem執行了')
def __setitem__(self,key,value):
print('setitem執行了')
def __delitem__(self, key):
print('delitem執行了')
demu = dog()
demu['tail']
demu['tail'] = 1
del demu['tail']
getitem執行了
setitem執行了
delitem執行了
例項:定義乙個字典,即支援點取值賦值,也支援中括號取值賦值。
class mydict:
def __init__(self,**kwargs):
self.__dict__.update(kwargs)
def __getitem__(self, item):
# return getattr(self,item)
return self.__dict__[item]
def __setitem__(self, key, value):
# setattr(self,key,value)
self.__dict__[key] = value
dic = mydict(k1='v1',k2='v2')
print(dic['k1'])
dic['k3'] = 'v3'
print(dic['k3'])
print(dic.k3)
dic.k4 = 'v4'
print(dic['k4'])
v1v3
v3v4
item系列魔法方法
class foo def init self,name self.name name def getitem self,item print getitem執行 self.dict item def setitem self,key,value print setitem執行 self.dict ...
Python概念 Item系列
所謂attr系列,其實是 setattr delattr getattr 三個函式,從名字中可以看出來這是一套設定,刪除,查詢的函式,那我們來乙個乙個的看 setitem self,key,value 當對類中的某個屬性進行 賦值 時觸發的函式 只有使用字典賦值的方式時才會觸發此方法的執行 與att...
python物件導向 item系列
具體用法 class foo def getitem self,item print get return self.dict item def setitem self,key,value print set self.dict key value 等同於setattr self,key,valu...