博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
定制序列
阅读量:5786 次
发布时间:2019-06-18

本文共 1236 字,大约阅读时间需要 4 分钟。

  协议(Protocols) 与其他编程语言中的接口很相似 , 他规定你哪些方法必须要定义. 然而在Python中的协议就显得不是那么的正式 . 事实上 , 在Python 中协议更像是一种指南 .

  如果你希望自己定制的容器是不可变的话 , 你只需要定义 __len__()和__getitem__() 方法. (定义长度和 取出就行)

  如果希望定制的容器是可变的话,你就需要再定义__setitem__()和__delitem__(两种方法.)

1 # 定制一个不可改变的列表 并且记录每个元素的访问次数 . 2 class CountList: 3     def __init__(sef,*args): # 参数的数量可变. 4         self.values=[x for x in args]   # 列表推导式 5         self.count={}.fromkeys(range(len(self.values)),0) 6  7     def __len__(self): 8         return len(self.values) 9 10     def __getitem__(self,key):11         self.count[key]+=112         return self.values[key]13 14 # 很巧妙的办法. 至少对于现在的我 看看这个收获还是可以的.15 16 # 类中有两个属性 一个是 value(列表) 一个是count(集合)17 18 # 当调用类 的时候的顺序 进入value , 并且这些元素的顺序符号进入count 并且打上 0的标记19 20 # 如果需要长度的话  就看value的长度就行21 22 # 如果需要元素的话  传入序号就行 , 传入序号的时候 将集合中该序号对应的 值 +1
1 =============== RESTART: C:/Users/Administrator/Desktop/new.py =============== 2 >>> c1=CountList(1,3,5,7,9) 3 >>> c2=CountList(2,4,6,8,10) 4 >>> c1 5 <__main__.CountList object at 0x02EA99F0> 6 >>> c1[1] 7 3 8 >>> c1.values 9 [1, 3, 5, 7, 9]10 >>> c1.count11 {0: 0, 1: 1, 2: 0, 3: 0, 4: 0}12 >>> c1[1]13 314 >>> c1[1]15 316 >>> c1.count17 {0: 0, 1: 3, 2: 0, 3: 0, 4: 0}18 >>>

 

转载于:https://www.cnblogs.com/A-FM/p/5682962.html

你可能感兴趣的文章
程序员喜欢怎样的职位描述?(转)
查看>>
威胁快报|ProtonMiner挖矿蠕虫扩大攻击面,加速传播
查看>>
PAT A1116
查看>>
App上架/更新怕被拒? iOS过审“避雷秘籍”请查收
查看>>
CentOS 7 防火墙操作
查看>>
关于 top 工具的 6 个替代方案
查看>>
程序员最讨厌的9句话,你可有补充?
查看>>
PAT A1037
查看>>
浅谈RPC
查看>>
HDU 4422 The Little Girl who Picks Mushrooms(简单题)
查看>>
HDUOJ---------(1045)Fire Net
查看>>
TextView 超链接点击跳转到下一个Activity
查看>>
Java技术专题之JVM逻辑内存回收机制研究图解版
查看>>
mysql经常使用命令
查看>>
sql server 2008安装的时候选NT AUTHORITY\NEWORK SERVICE 还是选 NT AUTHORITY\SYSTEM ?
查看>>
UNIX环境高级编程之第4章:文件和文件夹-习题
查看>>
bzoj2843极地旅行社题解
查看>>
【Linux】Linux中常用操作命令
查看>>
MyBatis3-SqlSessionDaoSupport的使用
查看>>
ReactiveSwift源码解析(三) Signal代码的基本实现
查看>>