手写一个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获取当前时间的方法
Jan 14 Python
Python中列表和元组的相关语句和方法讲解
Aug 20 Python
Python 常用 PEP8 编码规范详解
Jan 22 Python
浅谈django开发者模式中的autoreload是如何实现的
Aug 18 Python
python 设置文件编码格式的实现方法
Dec 21 Python
对python 数据处理中的LabelEncoder 和 OneHotEncoder详解
Jul 11 Python
Python实现Mysql数据统计及numpy统计函数
Jul 15 Python
深入学习python多线程与GIL
Aug 26 Python
下载与当前Chrome对应的chromedriver.exe(用于python+selenium)
Jan 14 Python
python实现查找所有程序的安装信息
Feb 18 Python
设置jupyter中DataFrame的显示限制方式
Apr 12 Python
Python流程控制语句的深入讲解
Jun 15 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
239军机修复记
2021/03/02 无线电
浅析Yii2 GridView 日期格式化并实现日期可搜索教程
2016/04/22 PHP
php使用mysqli和pdo扩展,测试对比mysql数据库的执行效率完整示例
2019/05/09 PHP
laravel5 Eloquent 实现事务方式
2019/10/21 PHP
JQuery的一些小应用收集
2010/03/27 Javascript
javascript调试说明
2010/06/07 Javascript
JS高级拖动技术 setCapture,releaseCapture
2011/07/31 Javascript
IE 当eval遇上function的处理
2011/08/09 Javascript
JavaScript限定复选框的选择个数示例代码
2013/08/25 Javascript
js阻止冒泡及jquery阻止事件冒泡示例介绍
2013/11/19 Javascript
JS控件ASP.NET的treeview控件全选或者取消(示例代码)
2013/12/16 Javascript
深入解读JavaScript中的Iterator和for-of循环
2015/07/28 Javascript
老生常谈onBlur事件与onfocus事件(js)
2016/07/09 Javascript
vue2滚动条加载更多数据实现代码
2017/01/10 Javascript
jquery仿苹果的时间/日期选择效果
2017/03/08 Javascript
vue cli3 调用百度翻译API翻译页面的实现示例
2019/09/13 Javascript
jquery实现上传文件进度条
2020/03/26 jQuery
Vue中keep-alive组件的深入理解
2020/08/23 Javascript
el-form 多层级表单的实现示例
2020/09/10 Javascript
Vite和Vue CLI的优劣
2021/01/30 Vue.js
Python pickle类库介绍(对象序列化和反序列化)
2014/11/21 Python
Python的SQLAlchemy框架使用入门
2015/04/29 Python
Python3.4实现远程控制电脑开关机
2018/02/22 Python
如何用python整理附件
2018/05/13 Python
详解Python下ftp上传文件linux服务器
2018/06/21 Python
Tensorflow设置显存自适应,显存比例的操作
2020/02/03 Python
Numpy一维线性插值函数的用法
2020/04/22 Python
python爬虫爬取淘宝商品比价(附淘宝反爬虫机制解决小办法)
2020/12/03 Python
英国银首饰公司:e&e Jewellery
2021/02/11 全球购物
党员目标管理责任书
2014/07/25 职场文书
简易版租房协议书范本
2014/10/13 职场文书
2015年社区妇联工作总结
2015/04/21 职场文书
2015年乡镇环保工作总结
2015/04/22 职场文书
优质护理心得体会
2016/01/22 职场文书
学习心得体会
2019/06/20 职场文书
Pytorch中使用ImageFolder读取数据集时忽略特定文件
2022/03/23 Python