手写一个python迭代器过程详解
作者:三国小梦 时间:2021-06-29 07:45:23
分析
我们都知道一个可迭代对象可以通过iter()可以返回一个迭代器。
如果想要一个对象称为可迭代对象,即可以使用for,那么必须实现__iter __()方法。
在一个类的实例对象想要变成迭代器,就必须实现__iter__()和__next__()方法。
调用iter()时,在对象内部默认调用__iter__(),即__iter__()的返回值应该是一个迭代器。
for的每次循环中或者next()时,都是自动调用迭代器的__next__()方法,并有一个返回值。
实现
class Classmate:
def __init__(self):
self.names = []
self.num = 0
def add(self, name):
self.names.append(name)
def __iter__(self):
return self
def __next__(self):
if self.num < len(self.names):
ret = self.names[self.num]
self.num += 1
return ret
else:
raise StopIteration
c = Classmate()
c.add("张三")
c.add("李四")
c.add("王五")
for i in c:
print(i)
"""
张三
李四
王五
"""
来源:https://www.cnblogs.com/lxy0/p/11411026.html
标签:手写,python,迭代器
0
投稿
猜你喜欢
python3 wechatpy微信支付的项目实践
2023-08-29 14:13:36
python使用pyecharts库画地图数据可视化的实现
2023-04-18 09:44:25
从传文件功能看本地化
2009-12-29 13:03:00
浅谈pytorch中stack和cat的及to_tensor的坑
2022-12-14 11:53:23
OpenCV+python实现实时目标检测功能
2023-11-03 01:59:35
Python Logging 日志记录入门学习
2022-05-17 14:48:39
win10 64bit下python NLTK安装教程
2023-04-05 19:49:40
centos7 PHP环境搭建 GD库 等插件安装方法
2023-11-05 21:25:38
Python中使用Counter进行字典创建以及key数量统计的方法
2023-10-05 20:16:36
如何用Python进行时间序列分解和预测
2022-06-20 14:39:42
django 自定义filter 判断if var in list的例子
2022-09-25 16:11:37
详解python 条件语句和while循环的实例代码
2023-11-19 11:32:58
JavaScript 组件之旅(二):编码实现和算法
2009-10-09 14:24:00
Yii2框架实现登陆添加验证码功能示例
2023-11-21 11:36:32
处理SQL Server 2000的命名实例和多实例
2009-01-19 13:28:00
我的css样式写法总结
2009-01-18 13:04:00
ACCESS转SQL Server2000需要注意的问题
2007-11-18 15:25:00
ini_set的用法介绍
2023-11-15 07:31:56
XML与HTML的结合(下)
2008-09-05 17:20:00
python机器学习基础K近邻算法详解KNN
2024-01-01 05:44:57