Python: 定制序列

本笔记原文来自FichC

1)Python中的三大容器:列表List,元组Tuple,字符串String;

2)Python允许我们定制一个不可变的容器,如String,代码中就不能有修改容器的数据方法,如__setitem__(), __delitem__();

3)如果希望定制的容器支持reversed()内置函数,则容器中需定义__reversed__()方法,提供对内置函数reversed()的支持;

4)容器中,查询容器‘容量‘的方法是通过len()内置函数来实现,所以容器应定义__len__()方法;

5)容器支持读,写,删除,对应的方法分别为:__getitem__(), __setitem__(), __delitem__();

6)课上的实例:定制一个列表,统计列表中每个元素被访问的次数:

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]

values中储存了列表的信息;count是使用字典的形式记录getitem被调用的次数,初始化为0;每调用一次就把对应的count【key】值加1;

测试结果:



扫描二维码关注公众号,回复: 1028922 查看本文章

猜你喜欢

转载自blog.csdn.net/huan_126/article/details/80332557