python学习笔记分享(二十八)定制序列
IT Xiao Ang Zai 8月16号
现在,让我们进行继续今天的python学习:
版本:python3.64
编程软件:pycharm
一:协议
要想成功地实现容器的定制,首先要谈一谈协议。协议与其他编程语言中的接口很相似,它规定了那些方法必须要定义。但在python中,协议更像是一种指南。
在Python中,像序列类型(如列表,元组,字符串)或映射类型(如字典)都是属于容器类型。这里要讲定制容器,那就必须要知道,定制容器的一些协议:
1.如果你希望定制的容器是不可变的话,你只需要定义__len__()和__getitem__()方法。
2.如果你希望定制的容器是可变的话,除了定义__len__()和__getitem__()方法,还需要定义__setitem__()和__delitem__()两个方法。
下表列举了定制容器类型相关的魔法方法:
魔法方法 | 含义 |
__len__(self) | 定义当被len()函数调用时的行为(返回容器中元素的个数) |
__getitem__(self,key) | 定义获取容器中指定元素的行为,相当于self[key] |
__setitem__(self,key,value) | 定义设置容器中指定元素的行为,相当于self[key]=value |
__delitem__(self,key) | 定义删除容器中指定元素的行为,相当于del self[key] |
__iter__(self) | 定义当迭代容器中的元素的行为 |
__reversed__(self) | 定义当被reversed()函数调用时的行为 |
__contains__(self,item) | 定义当使用成员测试运算符(in 或 not in)时的行为 |
二:下面编写一个不可改变的自定义列表,并记录列表中每个元素被访问的次数