python自定义容器

不可变容器:

 1 class CountTuple:
 2     def __init__(self,*args):
 3         self.valus=[x for x in args]
 4         self.counts={}.fromkeys(range(len(self.valus)),0) #自定义访问计数功能
 5 
 6     def __len__(self):
 7         return len(self.valus)
 8 
 9     def __getitem__(self,index):
10         self.counts[index]+=1
11         return self.valus[index]

演示结果:

 1 >>> c=CountTuple(3,8,7,2)
 2 >>> cc=CountTuple(8,9,0,3,5)
 3 >>> len(c)
 4 4
 5 >>> len(cc)
 6 5
 7 >>> c[2]
 8 7
 9 >>> cc[3]
10 3
11 >>> c[0]+cc[4]
12 8
13 >>> c.counts
14 {0: 1, 1: 0, 2: 1, 3: 0}
15 >>> cc.counts
16 {0: 0, 1: 0, 2: 0, 3: 1, 4: 1}

 

posted @ 2017-11-12 14:28  xiongjiawei  阅读(201)  评论(0)    收藏  举报