手写一个python迭代器过程详解


Posted in Python onAugust 27, 2019

分析

  • 我们都知道一个可迭代对象可以通过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)
"""
张三
李四
王五
"""

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Windows中使用wxPython和py2exe开发Python的GUI程序的实例教程
Jul 11 Python
Python中函数eval和ast.literal_eval的区别详解
Aug 10 Python
Python调用C# Com dll组件实战教程
Oct 12 Python
django 通过ajax完成邮箱用户注册、激活账号的方法
Apr 17 Python
对Python中range()函数和list的比较
Apr 19 Python
python实现三次样条插值
Dec 17 Python
用xpath获取指定标签下的所有text的实例
Jan 02 Python
Python 正则表达式爬虫使用案例解析
Sep 23 Python
python wav模块获取采样率 采样点声道量化位数(实例代码)
Jan 22 Python
python判断两个序列的成员是否一样的实例代码
Mar 01 Python
python subprocess pipe 实时输出日志的操作
Dec 05 Python
用python 绘制茎叶图和复合饼图
Feb 26 Python
浅析Python语言自带的数据结构有哪些
Aug 27 #Python
python3应用windows api对后台程序窗口及桌面截图并保存的方法
Aug 27 #Python
python协程gevent案例 爬取斗鱼图片过程解析
Aug 27 #Python
Python中Unittest框架的具体使用
Aug 27 #Python
详解python3中用HTMLTestRunner.py报ImportError: No module named 'StringIO'如何解决
Aug 27 #Python
Python3分析处理声音数据的例子
Aug 27 #Python
python中struct模块之字节型数据的处理方法
Aug 27 #Python
You might like
IIS下PHP连接数据库提示mysql undefined function mysql_connect()
2010/06/04 PHP
PHP多线程编程之管道通信实例分析
2015/03/07 PHP
php 解决扫描二维码下载跳转问题
2017/01/13 PHP
PHP使用星号替代用户名手机和邮箱的实现代码
2018/02/07 PHP
PHP中Static(静态)关键字功能与用法实例分析
2019/04/05 PHP
laravel-admin 后台表格筛选设置默认的查询日期方法
2019/10/03 PHP
jQuery编写widget的一些技巧分享
2010/10/28 Javascript
jquery 操作iframe的几种方法总结
2013/12/13 Javascript
node.js中的buffer.Buffer.isEncoding方法使用说明
2014/12/14 Javascript
基于jQuery实现网页打印功能
2015/12/01 Javascript
Angular2开发——组件规划篇
2017/03/28 Javascript
基于ES6作用域和解构赋值详解
2017/11/03 Javascript
利用js实现前后台传送Json的示例代码
2018/03/29 Javascript
Node.js的Koa实现JWT用户认证方法
2018/05/05 Javascript
nodejs实现日志读取、日志查找及日志刷新的方法分析
2019/05/20 NodeJs
微信小程序的授权实现过程解析
2019/08/02 Javascript
vant 时间选择器--开始时间和结束时间实例
2020/11/04 Javascript
解决vue props传Array/Object类型值,子组件报错的情况
2020/11/07 Javascript
[50:58]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 Mineski vs EG
2018/04/03 DOTA
Python高级编程之消息队列(Queue)与进程池(Pool)实例详解
2019/11/01 Python
在Tensorflow中查看权重的实现
2020/01/24 Python
pandas的resample重采样的使用
2020/04/24 Python
传播学毕业生求职信
2013/10/11 职场文书
装潢设计专业推荐信模板
2013/11/26 职场文书
西式婚礼证婚词
2014/01/12 职场文书
检察官就职演讲稿
2014/01/13 职场文书
大学生职业生涯规划书
2014/03/14 职场文书
大学新生军训自我鉴定
2014/09/18 职场文书
2014年便民服务中心工作总结
2014/12/20 职场文书
婚礼迎宾词大全
2015/08/10 职场文书
护理自荐信
2019/05/14 职场文书
pytorch 运行一段时间后出现GPU OOM的问题
2021/06/02 Python
Python3 类型标注支持操作
2021/06/02 Python
Javascript使用integrity属性进行安全验证
2021/11/07 Javascript
Java 实战项目之家居购物商城系统详解流程
2021/11/11 Java/Android
MySQL视图概念以及相关应用
2022/04/19 MySQL