当前位置: 首页 > 网络知识

Python基础入门学习笔记 047 魔法方法:定制序列

时间:2026-01-29 09:25:52

协议是什么?

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

容器类型的协议

•如果说你希望定制的容器是不可变的话,你只需要定义__len__()和__getitem__()方法。

•如果你希望定制的容器是可变的话,除了__len__()和__getitem__()方法,你还需要定义__setitem__()和__delitem__()两个方法。

练习要求

•编写一个不可改变的自定义列表,要求记录列表中每个元素被访问的次数。

1 class CountList: #定义记录列表中每个元素访问次数类 2 def __init__(self,*args): #参数是可变类型的 3 self.values = [x for x in args]#将args的数据存入列表self.values中 4 selfount = .frkeys(range(len(self.values)),0)#创建字典,初试化为0 5 6 def __len__(self): #返回容器中元素的个数 7 return len(self.values)#len方法用于返回参数的长度 8 def __getitem__(self,key): #获取容器中指定元素的行为,key为访问对应的键 9 selfount[key] += 1#每访问一次,字典键对应的键值加1 10 return self.values[key] 11 12 >>> c1 = CountList(1,3,5,7,9) 13 >>> c2 = CountList(2,4,6,8,10) 14 >>> c1[1] #c1[1]第一次访问 15 3 16 >>> c2[2] 17 6 18 >>> c1[1] + c2[2] #c1[1]第二次访问 19 9 20 >>> c1ount 21 22 >>> c2ount 23



上一篇:Python基础入门学习笔记 055 论一只爬虫的自我修养3:隐藏
下一篇:Python基础入门学习笔记 039 类和对象:拾遗
python
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器
  • 英特尔第五代 Xeon CPU 来了:详细信息和行业反应
  • 由于云计算放缓引发扩张担忧,甲骨文股价暴跌
  • Web开发状况报告详细介绍可组合架构的优点
  • 如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳
  • 美光在数据中心需求增长后给出了强有力的预测
  • 2027服务器市场价值将接近1960亿美元
  • 生成式人工智能的下一步是什么?
  • 分享在外部存储上安装Ubuntu的5种方法技巧
  • 全球数据中心发展的关键考虑因素
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器

    英特尔第五代 Xeon CPU 来了:详细信息和行业反应

    由于云计算放缓引发扩张担忧,甲骨文股价暴跌

    Web开发状况报告详细介绍可组合架构的优点

    如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳

    美光在数据中心需求增长后给出了强有力的预测

    2027服务器市场价值将接近1960亿美元

    生成式人工智能的下一步是什么?

    分享在外部存储上安装Ubuntu的5种方法技巧

    全球数据中心发展的关键考虑因素