零基础入门学Python 魔法方法:定制序列
class CountList:def __init__(self,*args):
self.values=
self.count={}.fromkeys(range(len(self.values)),0)
def __len__(self):
return len(self.values)
def __getitem__(self,key):
self.count +=1
return self.values
求大神解释一下上述代码,表示看不懂!
以下是我进行的一些操作:
>>> c1=CountList(1,3,4,5,9,10)
>>> c2=CountList(2,4,5,10,11)
>>> c1
4
>>> c2
4
>>> c1+c2
8
>>> c1.count
{0: 0, 1: 0, 2: 2, 3: 0, 4: 0, 5: 0}
>>> 沙发!
操作流程:c1=CountList(1,3,4,5,9,10)
先执行__init__()
self.valyes=把你输入的参数转化成列表#self.values=
self.count={}.fromkeys(range(len(self.values)),0)->self.count={}.fromkeys(range(6),0)-->self.count={}.fromkeys(range(6),0)在self.count字典里初始化设置键0 1 2 3 4 5,其值都为0
c1:
获取值时自动调用def __getitem__(self,key):
__getitem__(self,2):-->self.count+=1#统计访问次数--> return self.values#返回 self.values
所以c1返回4
同理c2也是如此
当执行c1+c2时,又获取了一遍c1的值,所以 c1.count返回{0: 0, 1: 0, 2: 2, 3: 0, 4: 0, 5: 0}
讲的很详细,学习了!
页:
[1]