手写一个python迭代器过程详解
作者:三国小梦 发布时间:2021-06-29 07:45:23
标签:手写,python,迭代器
分析
我们都知道一个可迭代对象可以通过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)
"""
张三
李四
王五
"""
来源:https://www.cnblogs.com/lxy0/p/11411026.html
0
投稿
猜你喜欢
- 本次系统环境os: Deepin(Linux)Python: 3.7lib: PyYAML=5.3.1 | selenium=3.141.0
- 为了顺利的开发一个多语言的国际化J2EE程序,需要修改数据库字符集,我的做法如下:安装 MySq时选择字符集为UTF-8修改MySql安装目
- 前言本文继续学习下 Python 编程在网络攻防领域的应用,主要是通过 Python 脚本进行 SSH 登录爆破和 FTP 服务登录爆破。S
- 如图:其中Num是自增长列,Operation是分类标签,count是汇总数据 代码如下:select Num=row_numb
- 今天有个脚本需要遍历获取某指定文件夹下面的所有文件,我记得很早前也实现过文件遍历和目录遍历的功能,于是找来看一看,嘿,不看不知道,看了吓一跳
- 本文实例为大家分享了python文件写入write()的操作的具体代码,供大家参考,具体内容如下filename = 'pragra
- 动态语言与静态语言有很多不同,最大的特性之一就是可以实现动态的对类和实例进行修改,在Python中,我们创建了一个类后可以对实例和类绑定心的
- 今天彬Go将和大家一起讨论网页设计趋势中很重要的环节,那就是”勾引”用户的按钮。所谓”勾引”用户的按钮,其实对于Web设计师来说,就是如何设
- 因客户需求,要把数据库里的索引编号做成五位长度的,且能自动累加编号,我只会在SQL中使用Identity自动编号:Create Table
- 阅读上一篇:FrontPage2002简明教程六:图片库 虽然FrontPage已经给我们提供了很多面很强大的所见即所得的工具,但是随着HT
- 第一章:基本的圆角框第二章:透明圆角化背景图片第三章:圆角化图片 第四章:CSS圆角框组件 V1.0序言:在我的文章《超圆滑圆角框的半完美解
- 前言PHP5.3之后支持了类似Java的jar包,名为phar。用来将多个PHP文件打包为一个文件。首先需要修改php.ini配置将phar
- 本文实例讲述了Python决策树和随机森林算法。分享给大家供大家参考,具体如下:决策树和随机森林都是常用的分类算法,它们的判断逻辑和人的思维
- 一个小代码 类似资源管理器效果 支持鼠标拖拽 没写些细节东西 JavaScript语言:
- 本文实例为大家分享了python点球小游戏的具体代码,供大家参考,具体内容如下1.游戏要求: 设置球的方向:左中右三个方向,射门或者扑救动作
- 1.11 – 添加缎带修饰网页局部模块中右上角的蓝色缎带修饰是这个网站界面设计中的一个亮点,只要合理的运用CSS、PNG透明图片和绝对定位属
- 01.简介当我们使用的鱼眼镜头视角大于160°时,OpenCV中用于校准镜头“经典”方法的效果可能就不是和理想了。即使我们仔细遵循OpenC
- 作为一名网站开发WEB前端工程师,对自己开发的网站项目应该尽可能地对其性能进行优化,现在互联网上搜索到的网站性能优化多是翻译转载自 Yaho
- 阅读上一篇:javascript面向对象编程(一)[javascript模拟传统OOP]javascript是一种非常灵活的语言,它的灵活度
- 如下所示:from pandas_datareader import data, wbfrom datetime import dateti