這個Item系列是egon老師自創的,個人還是可以接受這種文化底蘊的,所以直接拿來用,也是毫無違和感的
所謂Attr系列,其實是__setattr__,__delattr__,__getattr__ 三個函數,從名字中可以看出來這是一套設置,刪除,查詢的函數,那我們來一個一個的看:
__setitem__(self,key,value):當對類中的某個屬性進行"賦值"時觸發的函數(只有使用字典賦值的方式時才會觸發此方法的執行)
與Attr系列的區分:__setattr__(self):是在對象打點兒的方式賦值時,才會觸發的方法
代碼示例:
class Foo: def __setitem__(self, key, value): print(key,"獲得",value) f = Foo() f["name"] = "egon"
__delitem__(self,key):當類中的某個屬性被刪除時,觸發此方法(只有使用del字典方式刪除屬性時,才會觸發此方法)
與Attr系列的區分:__delattr__(self):使用del類打點兒屬性的方式刪除屬性,才會觸發此方法
代碼示例:
1 class Foo: 2 name = "egon" 3 def __delitem__(self, key): 4 print(key,"已被刪除") 5 f = Foo() 6 del f["name"]
__getitem__(self,item):當調用類中的屬性或方法時觸發此方法的執行(只在使用類[key]字典的方式調用時,才會觸發此方法)
與Attr系列的區分:其實這里已經很明顯了,__getattr__(self):是類打點兒調用且命名空間沒有發現名字的情況下,觸發此方法
代碼示例:
1 class Foo: 2 name = "egon" 3 def __getitem__(self, item): 4 print(item,"已被調用") 5 f = Foo() 6 f["name"]
以上就是Item系列的小總結,總覺得egon說什么都是對的