手写一个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求众数问题实例
Sep 26 Python
Python数据类型详解(三)元祖:tuple
May 08 Python
基于python select.select模块通信的实例讲解
Sep 21 Python
Python使用arrow库优雅地处理时间数据详解
Oct 10 Python
Python对列表去重的多种方法(四种方法)
Dec 05 Python
1 行 Python 代码快速实现 FTP 服务器
Jan 25 Python
python:print格式化输出到文件的实例
May 14 Python
Python3随机漫步生成数据并绘制
Aug 27 Python
Python跑循环时内存泄露的解决方法
Jan 13 Python
Django在Model保存前记录日志实例
May 14 Python
使用python求斐波那契数列中第n个数的值示例代码
Jul 26 Python
Python自定义sorted排序实现方法详解
Sep 18 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采集相关教程之一 CURL函数库
2010/02/15 PHP
Sample script that displays all of the users in a given SQL Server DB
2007/06/16 Javascript
让textarea自动调整大小的js代码
2011/04/12 Javascript
intro.js 页面引导简单用法 分享
2013/08/06 Javascript
你未必知道的JavaScript和CSS交互的5种方法
2014/04/02 Javascript
JavaScript中的toLocaleLowerCase()方法使用详解
2015/06/06 Javascript
javascript实现根据时间段显示问候语的方法
2015/06/18 Javascript
jquery实现的用户注册表单提示操作效果代码分享
2015/08/28 Javascript
JavaScript测试工具之Karma-Jasmine的安装和使用详解
2015/12/03 Javascript
jQueryUI DatePicker 添加时分秒
2016/06/04 Javascript
浅谈JavaScript中的this指针和引用知识
2016/08/05 Javascript
bootstrap模态框关闭后清除模态框的数据方法
2018/08/10 Javascript
jQuery实现鼠标移到某个对象时弹出显示层功能
2018/08/23 jQuery
微信小程序自定义tabBar组件开发详解
2020/09/24 Javascript
vue实现随机验证码功能的实例代码
2019/04/30 Javascript
详解解决小程序中webview页面多层history返回问题
2019/08/20 Javascript
JS实现拼图游戏
2021/01/29 Javascript
JavaScript实现网页tab栏效果制作
2020/11/20 Javascript
[00:12]DAC SOLO赛卫冕冠军 VG.Paparazi灬展现SOLO技巧
2018/04/06 DOTA
Python 详解基本语法_函数_返回值
2017/01/22 Python
python检查URL是否正常访问的小技巧
2017/02/25 Python
Python探索之URL Dispatcher实例详解
2017/10/28 Python
浅谈Python NLP入门教程
2017/12/25 Python
python3解析库BeautifulSoup4的安装配置与基本用法
2018/06/26 Python
学习python的前途 python挣钱
2019/02/27 Python
用python实现名片管理系统
2020/06/18 Python
解决CSS3的opacity属性带来的层叠顺序问题
2016/05/09 HTML / CSS
韩都衣舍天猫官方旗舰店:天猫女装销售总冠军
2017/10/10 全球购物
会计自我鉴定范文
2013/10/06 职场文书
酒店秘书求职信范文
2014/02/17 职场文书
网吧最新创业计划书范文
2014/03/27 职场文书
房产代理公证处委托书
2014/04/04 职场文书
2015年学校安全工作总结
2015/04/22 职场文书
教师信息技术学习心得体会
2016/01/21 职场文书
2016年小学端午节活动总结
2016/04/01 职场文书
SQL Server作业失败:无法确定所有者是否有服务器访问权限的解决方法
2021/06/30 SQL Server