分別是 列表、元組、字串
python中的協議更像是一種指南,例如鴨子型別,乙隻鳥像鴨子一樣走,像鴨子一樣叫,像鴨子一樣遊然後這只鳥就可以叫做鴨子
如果希望定製的容器是不可變的,那麼只需要定義__len__ 和__getitem__ 方法
如果希望定製的容器是可變的,那麼還需要定義 __setitem__ 和__delitem__方法
_len__(self)
定義當被 len() 呼叫時的行為(返回容器中元素的個數)
__getitem__(self, key)
定義獲取容器中指定元素的行為,相當於 self[key]
__setitem__(self, key, value)
定義設定容器中指定元素的行為,相當於 self[key] = value
__delitem__(self, key)
定義刪除容器中指定元素的行為,相當於 del self[key]
例子:自定義乙個列表類,完成list所有功能,並增counter(index)方法返回index對應值mylist[index]的訪問次數
classmylist:
def__init__(self,*args):
self.mylist = [x for x in
args]
self.count={}.fromkeys(range(len(self.mylist)),0)
(self.mylist)
def__len__
(self):
return
len(self.mylist)
def__getitem__
(self,key):
self.count[key]+=1
return
self.mylist[key]
def__setitem__
(self,key,value):
self.mylist[key]=value
def__delitem__
(self,key):
self.mylist.remove( self.mylist[key])
delself.count[key]
def self.count[len(self.mylist)-1]=0
defcounter(self, key):
return
self.count[key]
defpop(self):
self.mylist.pop()
self.count.pop(len(self.count)-1)
definsert(self,index,value):
keys=
values=
self.mylist.insert(index,value)
for each_key in
self.count.keys():
keys.insert(index,index)
for i in range(index+1,len(self.mylist)):
keys[i]+=1
for i in
range(len(keys)):
self.count[keys[i]]=0
defclear(self):
self.mylist.clear()
self.count.clear()
defreverse(self):
keys=
values=
self.mylist.reverse()
for each_key in
self.count.keys():
for each_val in
self.count.values():
keys.reverse()
#直接呼叫方法不能加等號
values.reverse()#
直接呼叫方法不能加等號
self.count.clear()
for i in
range(len(keys)):
self.count[keys[i]]=values[i]
python 魔法方法 定製序列 迭代器
容器型別的協議 如果說你希望定製的容器是不可變的話,你只需要定義 len 和 getitem 方法。如元組 字串 如果你希望定製的容器是可變的話,除了 len 和 getitem 方法,你還需要定義 setitem 和 delitem 兩個方法。容器型別的魔法方法如下 編寫乙個不可改變的自定義列表,...
魔法方法 定製序列(有關Protocol協議)
讀書筆記 重打 class countlist list def init self,args super.init args self count for i in args def len self return len self.count def getitem self,key self....
第047講 魔法方法 定製序列
常言道 無規矩不成方圓 講的是萬事萬物的發展都要在一定的規則下去執行,只有遵循一定的協議去做,事情才能夠按照正確的道路去發展。我們今天要談的是 定製容器,想要成功的實現容器的定製,我們要先談一談協議,那麼什麼是協議呢?協議 protlcols 與其他程式語言中的介面很相似,它規定你在哪些地方必須定義...