手写一个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 相关文章推荐
Python中比较特别的除法运算和幂运算介绍
Apr 05 Python
Python实现获取照片拍摄日期并重命名的方法
Sep 30 Python
Python pyinotify日志监控系统处理日志的方法
Mar 08 Python
Python中的 enum 模块源码详析
Jan 09 Python
Python使用Shelve保存对象方法总结
Jan 28 Python
如何使用Python进行OCR识别图片中的文字
Apr 01 Python
使用Python控制摄像头拍照并发邮件
Apr 23 Python
django 自定义filter 判断if var in list的例子
Aug 20 Python
Python使用Socket实现简单聊天程序
Feb 28 Python
Python中求对数方法总结
Mar 10 Python
Python数据库封装实现代码示例解析
Sep 05 Python
Python3+Flask安装使用教程详解
Feb 16 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
用PHP连接Oracle for NT 远程数据库
2006/10/09 PHP
基于php和mysql的简单的dao类实现crud操作功能
2014/01/27 PHP
PHP线程的内存回收问题
2016/07/08 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
2019/11/23 PHP
PHP ElasticSearch做搜索实例讲解
2020/02/05 PHP
jQuery的强大选择器小结
2009/12/27 Javascript
jquery uaMatch源代码
2011/02/14 Javascript
30个让人兴奋的视差滚动(Parallax Scrolling)效果网站
2012/03/04 Javascript
jQuery实现购物车多物品数量的加减+总价计算
2014/06/06 Javascript
jQuery中data()方法用法实例
2014/12/27 Javascript
jQuery给多个不同元素添加class样式的方法
2015/03/26 Javascript
详解jQuery中的元素的属性和相关操作
2015/08/14 Javascript
js判断价格,必须为数字且不能为负数的实现方法
2016/10/07 Javascript
基于JavaScript实现无限加载瀑布流
2017/07/21 Javascript
iview给radio按钮组件加点击事件的实例
2017/09/30 Javascript
微信小程序使用wxParse解析html的方法教程
2018/07/06 Javascript
vue+echarts实现动态绘制图表及异步加载数据的方法
2018/10/17 Javascript
js+HTML5 canvas 实现简单的加载条(进度条)功能示例
2019/07/16 Javascript
JS实现的碰撞检测与周期移动完整示例
2019/09/02 Javascript
python实现360皮肤按钮控件示例
2014/02/21 Python
python if not in 多条件判断代码
2016/09/21 Python
python生成式的send()方法(详解)
2017/05/08 Python
Python3 socket同步通信简单示例
2017/06/07 Python
python+mongodb数据抓取详细介绍
2017/10/25 Python
Request的中断和ErrorHandler实例解析
2018/02/12 Python
python实现电脑自动关机
2018/06/20 Python
python3 打开外部程序及关闭的示例
2018/11/06 Python
Python小工具之消耗系统指定大小内存的方法
2018/12/03 Python
python简单贪吃蛇开发
2019/01/28 Python
python base64库给用户名或密码加密的流程
2020/01/02 Python
python中的时区问题
2021/01/14 Python
英国假睫毛购买网站:FalseEyelashes.co.uk
2018/05/23 全球购物
采购部长岗位职责
2014/06/13 职场文书
我的长征观后感
2015/06/09 职场文书
java中重写父类方法加不加@Override详解
2021/06/21 Java/Android
Redis 持久化 RDB 与 AOF的执行过程
2021/11/07 Redis