* 當你用中括號去獲取屬性時 執行python
f1['age']
getitem執行 18code
f1['name'] = 'nash'
setitem執行get
f1['age'] = 18 f1['age1'] = 19
輸出結果 ---> 對應 __setitem__ 方法代碼塊裏面運行的結果
須要注意點:
f1['name'] = 'nash' 這樣的結構的賦值並不會觸發,只有在獲取屬性意義上纔會觸發getitem,而不是單純的格式!!!it
del f1['nash'] # del obj[key]時,delitem執行
列子:class
class A: def __getitem__(self, item): print("__getitem__") return self.__dict__[item] def __setitem__(self, key, value): print("__setitem__") self.__dict__[key] = value def __delitem__(self, key): del self.__dict__[key] print("__delitem__") a = A() # a.name = "jack" a["name"] = "jack" print(a["name"]) del a["name"] print(a["name"])