手写一个python迭代器过程详解

作者:三国小梦 时间:2021-06-29 07:45:23 

分析

  • 我们都知道一个可迭代对象可以通过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

标签:手写,python,迭代器
0
投稿

猜你喜欢

  • python3 wechatpy微信支付的项目实践

    2023-08-29 14:13:36
  • python使用pyecharts库画地图数据可视化的实现

    2023-04-18 09:44:25
  • 从传文件功能看本地化

    2009-12-29 13:03:00
  • 浅谈pytorch中stack和cat的及to_tensor的坑

    2022-12-14 11:53:23
  • OpenCV+python实现实时目标检测功能

    2023-11-03 01:59:35
  • Python Logging 日志记录入门学习

    2022-05-17 14:48:39
  • win10 64bit下python NLTK安装教程

    2023-04-05 19:49:40
  • centos7 PHP环境搭建 GD库 等插件安装方法

    2023-11-05 21:25:38
  • Python中使用Counter进行字典创建以及key数量统计的方法

    2023-10-05 20:16:36
  • 如何用Python进行时间序列分解和预测

    2022-06-20 14:39:42
  • django 自定义filter 判断if var in list的例子

    2022-09-25 16:11:37
  • 详解python 条件语句和while循环的实例代码

    2023-11-19 11:32:58
  • JavaScript 组件之旅(二):编码实现和算法

    2009-10-09 14:24:00
  • Yii2框架实现登陆添加验证码功能示例

    2023-11-21 11:36:32
  • 处理SQL Server 2000的命名实例和多实例

    2009-01-19 13:28:00
  • 我的css样式写法总结

    2009-01-18 13:04:00
  • ACCESS转SQL Server2000需要注意的问题

    2007-11-18 15:25:00
  • ini_set的用法介绍

    2023-11-15 07:31:56
  • XML与HTML的结合(下)

    2008-09-05 17:20:00
  • python机器学习基础K近邻算法详解KNN

    2024-01-01 05:44:57
  • asp之家 网络编程 m.aspxhome.com