|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- class Countlist:
- def __init__(self,*args):
- self.values=[i for i 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]
复制代码
- >>> ct=Countlist(1,3,5,7,9)
- >>> ct.values
- [1, 3, 5, 7, 9]
- >>> ct.count
- {0: 0, 1: 0, 2: 0, 3: 0, 4: 0}
- >>> ct.__getitem__(1)
- 3
- >>> ct[1]
- 3
- >>> ct.values[1]
- 3
- >>> ct[1]+ct[2]
- 8
- >>> ct.count
- {0: 0, 1: 3, 2: 1, 3: 0, 4: 0}
复制代码
如上述程序所示:问题一:为什么ct[1]会输出3,ct.values才是列表啊,应该是ct.values[1]=3才对
问题二:ct.count中,3这个元素被访问了4次,为什么输出结果只显示3次
问题一:为什么ct[1]会输出3,ct.values才是列表啊,应该是ct.values[1]=3才对
---ct[1]调用的是__getitem__,自然返回self.values[key]
问题二:ct.count中,3这个元素被访问了4次,为什么输出结果只显示3次
---只访问3次,ct.values[1]不是调用__getitem__,self.count不会加一
|
|