Wowzz 发表于 2019-8-20 18:11:15

零基础入门学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}
>>>

_2_ 发表于 2019-8-20 20:11:36

沙发!

松_HWI3H 发表于 2019-8-23 12:24:56

操作流程: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}

weijinke 发表于 2020-2-7 09:31:14

讲的很详细,学习了!
页: [1]
查看完整版本: 零基础入门学Python 魔法方法:定制序列