手写一个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 15 Python
在Python中使用第三方模块的教程
Apr 27 Python
使用Python脚本将Bing的每日图片作为桌面的教程
May 04 Python
python在windows下创建隐藏窗口子进程的方法
Jun 04 Python
Python计算一个文件里字数的方法
Jun 15 Python
Python AES加密模块用法分析
May 22 Python
Python中矩阵库Numpy基本操作详解
Nov 21 Python
Django rest framework jwt的使用方法详解
Aug 08 Python
Python控制台输出时刷新当前行内容而不是输出新行的实现
Feb 21 Python
pyspark给dataframe增加新的一列的实现示例
Apr 24 Python
python中get和post有什么区别
Jun 19 Python
python绘制趋势图的示例
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(6) 面向对象
2010/02/16 PHP
PHP解码unicode编码的中文字符代码分享
2014/08/13 PHP
php上传图片之时间戳命名(保存路径)
2014/08/15 PHP
Thinkphp搭建包括JS多语言的多语言项目实现方法
2014/11/24 PHP
PHP数组实际占用内存大小原理解析
2020/12/11 PHP
在html页面中包含共享页面的方法
2008/10/24 Javascript
jQuery Ajax 仿AjaxPro.Utility.RegisterTypeForAjax辅助方法
2011/09/27 Javascript
js获取input标签的输入值实现代码
2013/08/05 Javascript
jQuery简单图表peity.js使用示例
2014/05/02 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(一)
2015/12/10 Javascript
jQuery获取某天的农历日期并判断是否除夕或新年的方法
2016/03/01 Javascript
AngularJS ng-mousedown 指令
2016/08/02 Javascript
JS实现表单验证功能(验证手机号是否存在,验证码倒计时)
2016/10/11 Javascript
jquery操作ul的一些操作笔记整理(干货)
2017/08/31 jQuery
Angular HMR(热模块替换)功能实现方法
2018/04/04 Javascript
BootStrap表单验证中的非Submit类型按钮点击时触发验证的坑
2019/09/05 Javascript
修改layui的后台模板的左侧导航栏可以伸缩的方法
2019/09/10 Javascript
微信小程序防止多次点击跳转和防止表单组件输入内容多次验证功能(函数防抖)
2019/09/19 Javascript
js滚轮事件 js自定义滚动条的实现
2020/01/18 Javascript
解决三元运算符 报错“SyntaxError: can''t assign to conditional expression”
2020/02/12 Javascript
python输出指定月份日历的方法
2015/04/23 Python
python实现简单socket通信的方法
2016/04/19 Python
python中print的不换行即时输出的快速解决方法
2016/07/20 Python
Django通用类视图实现忘记密码重置密码功能示例
2019/12/17 Python
Tensorflow卷积实现原理+手写python代码实现卷积教程
2020/05/22 Python
Python Celery异步任务队列使用方法解析
2020/08/10 Python
美国网上鞋城:Shoeline.com
2016/11/17 全球购物
Kipling澳洲官网:购买凯浦林包包
2020/12/17 全球购物
优纳科技软件测试面试题
2012/05/15 面试题
学生档案自我鉴定
2013/10/07 职场文书
给实习单位的感谢信
2014/02/01 职场文书
学校消防演习方案
2014/02/19 职场文书
就业推荐表自我评价范文
2015/03/02 职场文书
员工开除通知书
2015/04/25 职场文书
2015年秋季运动会前导词
2015/07/20 职场文书
python xlwt模块的使用解析
2021/04/13 Python