手写一个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内置函数之filter map reduce介绍
Nov 30 Python
Python HTMLParser模块解析html获取url实例
Apr 08 Python
python一键升级所有pip package的方法
Jan 16 Python
python 编程之twisted详解及简单实例
Jan 28 Python
Python读写docx文件的方法
May 08 Python
Python I/O与进程的详细讲解
Mar 08 Python
Python使用Tkinter实现滚动抽奖器效果
Jan 06 Python
TensorFlow实现自定义Op方式
Feb 04 Python
TensorFlow2.1.0最新版本安装详细教程
Apr 08 Python
keras处理欠拟合和过拟合的实例讲解
May 25 Python
基于Keras中Conv1D和Conv2D的区别说明
Jun 19 Python
Django修改app名称和数据表迁移方案实现
Sep 17 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安全配置 如何配置使其更安全
2011/12/16 PHP
javascript中的void运算符语法及使用介绍
2013/03/10 Javascript
JS连连看源码完美注释版(推荐)
2013/12/09 Javascript
关闭ie窗口清除Session的解决方法
2014/01/10 Javascript
深入探寻seajs的模块化与加载方式
2015/04/14 Javascript
javascript每日必学之条件分支
2016/02/17 Javascript
js css+html实现简单的日历
2016/07/14 Javascript
jQuery实现的图片轮播效果完整示例
2016/09/12 Javascript
js获取指定时间的前几秒
2017/04/05 Javascript
深入理解ES6 Promise 扩展always方法
2017/09/26 Javascript
解决angular双向绑定无效果,ng-model不能正常显示的问题
2018/10/02 Javascript
使用 node.js 模仿 Apache 小部分功能
2019/07/07 Javascript
vue 使用外部JS与调用原生API操作示例
2019/12/02 Javascript
JavaScript实现京东放大镜效果
2019/12/03 Javascript
浅谈JavaScript窗体Window.ShowModalDialog使用
2020/07/22 Javascript
[05:45]Ti4观战指南(下)
2014/07/07 DOTA
spyder常用快捷键(分享)
2017/07/19 Python
让代码变得更易维护的7个Python库
2018/10/09 Python
在PyCharm中三步完成PyPy解释器的配置的方法
2018/10/29 Python
对python pandas 画移动平均线的方法详解
2018/11/28 Python
python GUI库图形界面开发之PyQt5多线程中信号与槽的详细使用方法与实例
2020/03/08 Python
快速解决jupyter启动卡死的问题
2020/04/10 Python
详解python算法常用技巧与内置库
2020/10/17 Python
matplotlib绘制鼠标的十字光标的实现(内置方式)
2021/01/06 Python
CSS3 优势以及网页设计师如何使用CSS3技术
2009/07/29 HTML / CSS
HTML5 body设置自适应全屏
2020/05/07 HTML / CSS
某个公司的Java笔面试题
2016/03/11 面试题
中国梦的演讲稿
2014/01/08 职场文书
大型晚会策划方案
2014/02/06 职场文书
家长寄语大全
2014/04/02 职场文书
李开复演讲稿
2014/05/24 职场文书
小学清明节活动总结
2014/07/04 职场文书
学生检讨书怎么写?
2014/10/10 职场文书
行政主管岗位职责范本
2015/04/09 职场文书
IDEA 链接Mysql数据库并执行查询操作的完整代码
2021/05/20 MySQL
golang用type-switch判断interface的实际存储类型
2022/04/14 Golang