鱼C论坛

 找回密码
 立即注册
查看: 2373|回复: 3

[已解决]零基础入门学Python 魔法方法:定制序列

[复制链接]
发表于 2019-8-20 18:11:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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}
>>>
最佳答案
2019-8-23 12:24:56
操作流程: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}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-8-20 20:11:36 | 显示全部楼层
沙发!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-8-23 12:24:56 | 显示全部楼层    本楼为最佳答案   
操作流程: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}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-7 09:31:14 | 显示全部楼层
讲的很详细,学习了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 10:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表