手写一个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入门篇之文件
Oct 20 Python
Python文件操作,open读写文件,追加文本内容实例
Dec 14 Python
Python实现Mysql数据库连接池实例详解
Apr 11 Python
Python面向对象特殊成员
Apr 24 Python
Python实现简单的获取图片爬虫功能示例
Jul 12 Python
基于python实现高速视频传输程序
May 05 Python
python实现大文本文件分割
Jul 22 Python
Python MongoDB 插入数据时已存在则不执行,不存在则插入的解决方法
Sep 24 Python
Python实现图片裁剪的两种方式(Pillow和OpenCV)
Oct 30 Python
Python如何实现定时器功能
May 28 Python
Python利用myqr库创建自己的二维码
Nov 24 Python
python读取图片颜色值并生成excel像素画的方法实例
Feb 19 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
冰滴咖啡制作步骤
2021/03/03 冲泡冲煮
apache+php完美解决301重定向的两种方法
2011/06/08 PHP
php获取后台Job管理的实现代码
2011/06/10 PHP
php结合redis高并发下发帖、发微博的实现方法
2016/12/15 PHP
js href的用法
2010/05/13 Javascript
js不完美解决click和dblclick事件冲突问题
2012/07/16 Javascript
基于jquery的滚动条滚动固定div(附演示下载)
2012/10/29 Javascript
使用JavaScript动态设置样式实现代码及演示动画
2013/01/25 Javascript
编写js扩展方法判断一个数组中是否包含某个元素
2013/11/08 Javascript
a标签click和href执行顺序探讨
2014/06/23 Javascript
jQuery实现为图片添加镜头放大效果的方法
2015/06/25 Javascript
javascript学习笔记整理(概述、变量、数据类型简介)
2015/10/25 Javascript
js实现HTML中Select二级联动的实例
2018/01/05 Javascript
AngularJS中的作用域实例分析
2018/05/16 Javascript
Vue组件间通信 Vuex的用法解析
2019/08/05 Javascript
[02:19]DOTA2上海特级锦标赛 观赛指南 Spectator Guide
2016/02/04 DOTA
对于Python编程中一些重用与缩减的建议
2015/04/14 Python
浅谈Python单向链表的实现
2015/12/24 Python
Python执行时间的计算方法小结
2017/03/17 Python
名片管理系统python版
2018/01/11 Python
pyqt5 实现 下拉菜单 + 打开文件的示例代码
2019/06/20 Python
解决python中的幂函数、指数函数问题
2019/11/25 Python
基于pandas中expand的作用详解
2019/12/17 Python
浅谈Python访问MySQL的正确姿势
2020/01/07 Python
详解用Python爬虫获取百度企业信用中企业基本信息
2020/07/02 Python
python自动化测试三部曲之request+django实现接口测试
2020/10/07 Python
美国顶级奢侈茶:Mighty Leaf Tea(美泰茶)
2016/11/26 全球购物
2014党员学习《反腐倡廉警示教育读本》思想汇报
2014/09/13 职场文书
2014年全国爱牙日宣传活动方案
2014/09/21 职场文书
项目合作协议书
2014/09/23 职场文书
2014县政府领导班子三严三实对照检查材料思想汇报
2014/09/26 职场文书
党员廉洁自律个人总结
2015/02/13 职场文书
测量员岗位职责
2015/02/14 职场文书
让子弹飞观后感
2015/06/11 职场文书
Canvas跟随鼠标炫彩小球的实现
2021/04/11 Javascript
OpenCV-Python直方图均衡化实现图像去雾
2021/06/07 Python