魔法方法 定製序列(有關Protocol協議)

2021-08-14 05:34:42 字數 2431 閱讀 9441

讀書筆記:

重打**:

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.count[key] += 1

return super().__getitem__(key)

def__setitem__

(self,key,value):

self.count[key] += 1

super().__setitem__(key,value)

def__delitem__

(self,key):

del self.count[key]

super().__delitem__(key)

defcounter

(self,key):

return self.count[key]

def(self,value):

defpop(self,key = -1):

del self.count[key]

return super().pop(key)

defremove

(self,value):

key = super().index(value)#先求出索引

del self.count[key]

super().remove(value)

definsert

(self,key,value):

self.count.insert(key,0) #計數為0

super().insert(key,value)

defclear

(): self.count.clear()

super().clear()

defreverse

(self):

self.count.reverse()

super().reverse()

>>> list1 = countlist(1,2,3)

>>> list1

[1, 2, 3]

>>> list1.count

[0, 0, 0]

>>> list1[0]

1>>> list1.count

[1, 0, 0]

>>> list1.counter(0)

1>>> list1

[1, 2, 3, 4]

>>> list1.remove(1)

>>> list1.pop(0)

2>>> list1

[3, 4]

>>> list1.extend([8,8])

>>> list1

[3, 4, 8, 8]

>>> list1.count(3)

traceback (most recent call last):

file "", line 1, in

list1.count(3)

typeerror: 'list' object is

not callable

>>> list1.count(1)

traceback (most recent call last):

file "", line 1, in

list1.count(1)

typeerror: 'list' object is

not callable

Python3 魔法方法 定製序列

分別是 列表 元組 字串 python中的協議更像是一種指南,例如鴨子型別,乙隻鳥像鴨子一樣走,像鴨子一樣叫,像鴨子一樣遊然後這只鳥就可以叫做鴨子 如果希望定製的容器是不可變的,那麼只需要定義 len 和 getitem 方法 如果希望定製的容器是可變的,那麼還需要定義 setitem 和 deli...

python 魔法方法 定製序列 迭代器

容器型別的協議 如果說你希望定製的容器是不可變的話,你只需要定義 len 和 getitem 方法。如元組 字串 如果你希望定製的容器是可變的話,除了 len 和 getitem 方法,你還需要定義 setitem 和 delitem 兩個方法。容器型別的魔法方法如下 編寫乙個不可改變的自定義列表,...

第047講 魔法方法 定製序列

常言道 無規矩不成方圓 講的是萬事萬物的發展都要在一定的規則下去執行,只有遵循一定的協議去做,事情才能夠按照正確的道路去發展。我們今天要談的是 定製容器,想要成功的實現容器的定製,我們要先談一談協議,那麼什麼是協議呢?協議 protlcols 與其他程式語言中的介面很相似,它規定你在哪些地方必須定義...