|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
class CountList:
def __init__(self,*args):
self.values=[x for x in args]
self.count={}.fromkeys(range(len(self.values)),0)
def __len__(self):
return len(self.values)
def __getitem__(self,key):
self.count[key] +=1
return self.values[key]
求大神解释一下上述代码,表示看不懂!
以下是我进行的一些操作:
>>> c1=CountList(1,3,4,5,9,10)
>>> c2=CountList(2,4,5,10,11)
>>> c1[2]
4
>>> c2[1]
4
>>> c1[2]+c2[1]
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=[x for x in args]把你输入的参数转化成列表#self.values=[1,3,4,5,9,10]
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[2]:
获取值时自动调用def __getitem__(self,key):
__getitem__(self,2):-->self.count[2]+=1#统计访问次数--> return self.values[key]#返回 self.values[2]
所以c1[2]返回4
同理c2也是如此
当执行c1[2]+c2[1]时,又获取了一遍c1[2]的值,所以 c1.count返回{0: 0, 1: 0, 2: 2, 3: 0, 4: 0, 5: 0}
|
|