手写一个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之yield表达式学习
Sep 02 Python
Python多进程并发(multiprocessing)用法实例详解
Jun 02 Python
浅谈Python的垃圾回收机制
Dec 17 Python
Python之日期与时间处理模块(date和datetime)
Feb 16 Python
python实现简单登陆流程的方法
Apr 22 Python
让代码变得更易维护的7个Python库
Oct 09 Python
浅谈pandas用groupby后对层级索引levels的处理方法
Nov 06 Python
对python 命令的-u参数详解
Dec 03 Python
Django Rest framework之认证的实现代码
Dec 17 Python
Python文件读写常见用法总结
Feb 22 Python
python实时监控logstash日志代码
Apr 27 Python
Django models文件模型变更错误解决
May 11 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 Socket写的POP3类
2013/10/30 PHP
php 中文字符串首字母的获取函数分享
2013/11/04 PHP
C#使用PHP服务端的Web Service通信实例
2014/04/08 PHP
php+ajax实现图片文件上传功能实例
2014/06/17 PHP
PHP中ini_set与ini_get用法实例
2014/11/04 PHP
php获取本机真实IP地址实例代码
2016/03/31 PHP
dojo随手记 gird组件引用
2011/02/24 Javascript
jQuery模拟超链接点击效果代码
2013/04/21 Javascript
利用JavaScript实现新闻滚动效果(实例代码)
2013/11/27 Javascript
js使用Array.prototype.sort()对数组对象排序的方法
2015/01/28 Javascript
js的三种继承方式详解
2017/01/21 Javascript
微信JSSDK调用微信扫一扫功能的方法
2017/07/25 Javascript
vue中使用sessionStorage记住密码功能
2018/07/24 Javascript
layui实现form表单同时提交数据和文件的代码
2019/10/25 Javascript
JavaScript简单编程实例学习
2020/02/14 Javascript
vue print.js打印支持Echarts图表操作
2020/11/13 Javascript
[01:38]DOTA2 2015国际邀请赛中国区预选赛 Showopen
2015/06/01 DOTA
Python中的index()方法使用教程
2015/05/18 Python
Python语言实现将图片转化为html页面
2017/12/06 Python
python读取和保存视频文件
2018/04/16 Python
tensorflow 使用flags定义命令行参数的方法
2018/04/23 Python
Python爬虫实现vip电影下载的示例代码
2020/04/20 Python
python如何删除文件、目录
2020/06/23 Python
Html+Css+Jquery实现左侧滑动拉伸导航菜单栏的示例代码
2020/03/17 HTML / CSS
Kidsroom台湾:来自德国的婴儿用品
2017/12/11 全球购物
大学生护理专业自荐信
2013/10/03 职场文书
物理专业本科生自荐信
2014/01/30 职场文书
数学与统计学院学生个人职业生涯规划书
2014/02/10 职场文书
计算机大学生职业生涯规划书范文
2014/02/19 职场文书
监考失职检讨书
2015/01/26 职场文书
小学三八妇女节活动总结
2015/02/06 职场文书
大学生毕业个人总结
2015/02/15 职场文书
讲文明倡议书
2015/04/29 职场文书
会议室使用管理制度
2015/08/06 职场文书
解决jupyter notebook图片显示模糊和保存清晰图片的操作
2021/04/24 Python
Vue.js中v-bind指令的用法介绍
2022/03/13 Vue.js