手写一个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 29 Python
详解python调度框架APScheduler使用
Mar 28 Python
python 实现一个贴吧图片爬虫的示例
Oct 12 Python
使用pandas读取csv文件的指定列方法
Apr 21 Python
Python基于递归和非递归算法求两个数最大公约数、最小公倍数示例
May 21 Python
Django框架自定义session处理操作示例
May 27 Python
python 实现识别图片上的数字
Jul 30 Python
Python 网络编程之TCP客户端/服务端功能示例【基于socket套接字】
Oct 12 Python
python NumPy ndarray二维数组 按照行列求平均实例
Nov 26 Python
在django中实现choices字段获取对应字段值
Jul 12 Python
Python读取多列数据以及用matplotlib制作图表方法实例
Sep 23 Python
Django项目在pycharm新建的步骤方法
Mar 02 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
【COS正片】蕾姆睡衣cos,纯洁可爱被治愈了 cn名濑弥七
2020/03/02 日漫
php防注
2007/01/15 PHP
Fatal error: session_start(): Failed to initialize storage module: files问题解决方法
2014/05/04 PHP
PHP实现服务器状态监控的方法
2014/12/09 PHP
php保存任意网络图片到服务器的方法
2015/04/14 PHP
PHP获取远程图片并保存到本地的方法
2015/05/12 PHP
PHP合并数组的2种方法小结
2016/11/24 PHP
麦鸡的TAB切换功能结合了javascript和css
2007/12/17 Javascript
jquery和ajax的关系详细介绍
2013/11/29 Javascript
采用call方式实现js继承
2014/05/20 Javascript
JavaScript中的anchor()方法使用详解
2015/06/08 Javascript
js修改onclick动作的四种方法(推荐)
2016/08/18 Javascript
JS 拦截全局ajax请求实例解析
2016/11/29 Javascript
AngularJS动态菜单操作指令
2017/04/25 Javascript
集合Bootstrap自定义confirm提示效果
2017/09/19 Javascript
JS使用贪心算法解决找零问题示例
2017/11/27 Javascript
vue2.0 elementUI制作面包屑导航栏
2018/02/22 Javascript
AngularJS中的作用域实例分析
2018/05/16 Javascript
Node.js 深度调试方法解析
2020/07/28 Javascript
python3使用tkinter实现ui界面简单实例
2014/01/10 Python
pandas.DataFrame的pivot()和unstack()实现行转列
2019/07/06 Python
python 含子图的gif生成时内存溢出的方法
2019/07/07 Python
tensorflow没有output结点,存储成pb文件的例子
2020/01/04 Python
pytorch之ImageFolder使用详解
2020/01/06 Python
python GUI库图形界面开发之PyQt5窗口控件QWidget详细使用方法
2020/02/26 Python
Python使用正则表达式实现爬虫数据抽取
2020/08/17 Python
商务邀请函范文
2014/01/14 职场文书
青年文明号服务承诺
2014/03/31 职场文书
湖南省党的群众路线教育实践活动总结会议新闻稿
2014/10/21 职场文书
2014年物业公司工作总结
2014/11/22 职场文书
人事专员岗位职责
2015/02/03 职场文书
慰问信范文
2015/02/14 职场文书
初中语文教师研修日志
2015/11/13 职场文书
母婴行业实体、电商模式全面解析
2019/08/01 职场文书
关于Vue Router的10条高级技巧总结
2021/05/06 Vue.js
Java8中接口的新特性使用指南
2021/11/01 Java/Android