手写一个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 13 Python
Python常用时间操作总结【取得当前时间、时间函数、应用等】
May 11 Python
Python 多线程Threading初学教程
Aug 22 Python
Python实现购物车程序
Apr 16 Python
python scipy求解非线性方程的方法(fsolve/root)
Nov 12 Python
对python插入数据库和生成插入sql的示例讲解
Nov 14 Python
Python中的集合介绍
Jan 28 Python
Python redis操作实例分析【连接、管道、发布和订阅等】
May 16 Python
Python+Redis实现布隆过滤器
Dec 08 Python
pytorch forward两个参数实例
Jan 17 Python
解决django无法访问本地static文件(js,css,img)网页里js,cs都加载不了
Apr 07 Python
python smtplib发送多个email联系人的实现
Oct 09 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 array_map array_multisort 高效处理多维数组排序
2009/06/11 PHP
php入门教程 精简版
2009/12/13 PHP
PHP类的反射用法实例
2014/11/03 PHP
php实现的IMEI限制的短信验证码发送类
2015/05/05 PHP
YII2框架中添加自定义模块的方法实例分析
2020/03/18 PHP
php实现记事本案例
2020/10/20 PHP
有一段有意思的代码-javascript现实多行信息
2007/08/26 Javascript
JavaScript 监听textarea中按键事件
2009/10/08 Javascript
在服务端(Page.Write)调用自定义的JS方法详解
2013/08/09 Javascript
轮播的简单实现方法
2016/07/28 Javascript
JS防止网页被嵌入iframe框架的方法分析
2016/09/13 Javascript
详解jQuery中基本的动画方法
2016/12/14 Javascript
详解刷新页面vuex数据不消失和不跳转页面的解决
2018/01/30 Javascript
详解Ubuntu安装angular-cli遇到的坑
2018/09/08 Javascript
[01:06:43]完美世界DOTA2联赛PWL S3 PXG vs GXR 第二场 12.19
2020/12/24 DOTA
python类和函数中使用静态变量的方法
2015/05/09 Python
Python中的列表生成式与生成器学习教程
2016/03/13 Python
python制作小说爬虫实录
2017/08/14 Python
python模块smtplib实现纯文本邮件发送功能
2018/05/22 Python
解决Django migrate No changes detected 不能创建表的问题
2018/05/27 Python
使用Python串口实时显示数据并绘图的例子
2019/12/26 Python
termux中matplotlib无法显示中文问题的解决方法
2021/01/11 Python
html5超简单的localStorage实现记住密码的功能实现
2017/09/07 HTML / CSS
美国知名的女性服饰品牌:LOFT(洛芙特)
2016/08/05 全球购物
欧缇丽美国官网:Caudalie美国
2016/12/31 全球购物
高中军训感言1000字
2014/03/01 职场文书
制药工程专业职业生涯规划范文
2014/03/10 职场文书
如何撰写一封出色的求职信
2014/04/27 职场文书
文明之星事迹材料
2014/05/09 职场文书
作风建设年活动实施方案
2014/10/24 职场文书
全国法制宣传日活动总结2014
2014/11/01 职场文书
项目经理助理岗位职责
2015/04/13 职场文书
学校德育工作总结2015
2015/05/11 职场文书
励志语录:只有自己足够强大,才能不被别人践踏
2020/01/09 职场文书
Go Plugins插件的实现方式
2021/08/07 Golang
win11无线投屏在哪设置? win11无线投屏功能的使用方法
2022/04/08 数码科技