手写一个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实现生成简单的Makefile文件代码示例
Mar 10 Python
深入解析Python中的urllib2模块
Nov 13 Python
windows下ipython的安装与使用详解
Oct 20 Python
回调函数的意义以及python实现实例
Jun 20 Python
解决Pycharm调用Turtle时 窗口一闪而过的问题
Feb 16 Python
PyQt4 treewidget 选择改变颜色,并设置可编辑的方法
Jun 17 Python
linux中如何使用python3获取ip地址
Jul 15 Python
使用PyOpenGL绘制三维坐标系实例
Dec 24 Python
TensorFlow 输出checkpoint 中的变量名与变量值方式
Feb 11 Python
Python递归函数特点及原理解析
Mar 04 Python
Python3交互式shell ipython3安装及使用详解
Jul 11 Python
详解Python函数print用法
Jun 18 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 编程请选择正确的文本编辑软件
2006/12/21 PHP
MYSQL环境变量设置方法
2007/01/15 PHP
完美解决PHP中文乱码
2009/11/26 PHP
PHP文件及文件夹操作之创建、删除、移动、复制
2016/07/13 PHP
form自动提交实例讲解
2017/07/10 PHP
javascript各种复制代码收集
2008/09/20 Javascript
使用javascript实现有效时间的控制,并显示将要过期的时间
2014/01/02 Javascript
JS实现倒计时和文字滚动的效果实例
2014/10/29 Javascript
js对象的复制继承实例
2015/01/10 Javascript
如何使用AngularJs打造权限管理系统【简易型】
2016/05/09 Javascript
js实现千分符和保留几位小数的简单实例
2016/08/01 Javascript
JS表格组件BootstrapTable行内编辑解决方案x-editable
2016/09/01 Javascript
D3.js实现文本的换行详解
2016/10/14 Javascript
JSP防止网页刷新重复提交数据的几种方法
2016/11/19 Javascript
基于vue2.0实现的级联选择器
2017/06/09 Javascript
JS数组转字符串实现方法解析
2020/09/04 Javascript
python按照多个字符对字符串进行分割的方法
2015/03/17 Python
在Python的Flask框架中验证注册用户的Email的方法
2015/09/02 Python
利用python如何处理nc数据详解
2018/05/23 Python
python-str,list,set间的转换实例
2018/06/27 Python
APIStar:一个专为Python3设计的API框架
2018/09/26 Python
python 字符串常用函数详解
2019/09/11 Python
Flask框架 CSRF 保护实现方法详解
2019/10/30 Python
python飞机大战pygame游戏背景设计详解
2019/12/17 Python
Python图像处理库PIL中图像格式转换的实现
2020/02/26 Python
实例教程 利用html5和css3打造一款创意404页面
2014/10/20 HTML / CSS
泰国在线书店:SE-ED
2020/06/21 全球购物
学校门卫工作职责
2013/12/07 职场文书
汽车装潢店创业计划书范文
2014/02/05 职场文书
网络信息安全承诺书
2014/03/26 职场文书
个性车贴标语
2014/06/24 职场文书
国家奖学金获奖感言
2014/08/16 职场文书
2014年无财产无子女离婚协议书范本
2014/10/09 职场文书
2016年社会主义核心价值观心得体会
2016/01/21 职场文书
Windows11性能真的上涨35%? 桌面酷睿i9实测结果公开
2021/11/21 数码科技
修改Nginx配置返回指定content-type的方法
2022/09/23 Servers