python 将对象设置为可迭代的两种实现方法


Posted in Python onJanuary 21, 2019

1、实现 __getitem__(self)

class Library(object):
  def __init__(self):
    self.value=['a','b','c','d','e']


  def __getitem__(self, i):
    if i>=len(self.value):
      raise IndexError("out of index")
    value=self.value[i]
    return value

调用的时候,系统默认从0 开始传入,并使得i=i+1

2、实现 __iter__(self),next(self)

class Library2(object):
  def __init__(self):
    self.value=['a','b','c','d','e']
    self.i=-1
  def __iter__(self):
    return self
  def next(self):
    self.i += 1
    if self.i>=len(self.value):
      raise StopIteration
    return self.value[self.i]
    
 test=Library2()
 print test.next()
 print test.next()

在这里可以像生成器一样使用

以上这篇python 将对象设置为可迭代的两种实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python安装官方whl包和tar.gz包的方法(推荐)
Jun 04 Python
python爬取哈尔滨天气信息
Jul 14 Python
python3用PIL把图片转换为RGB图片的实例
Jul 04 Python
Python学习笔记之For循环用法详解
Aug 14 Python
Python facenet进行人脸识别测试过程解析
Aug 16 Python
Python3如何对urllib和urllib2进行重构
Nov 25 Python
win10系统下python3安装及pip换源和使用教程
Jan 06 Python
pytorch 自定义参数不更新方式
Jan 06 Python
python 在threading中如何处理主进程和子线程的关系
Apr 25 Python
Pycharm快捷键配置详细整理
Oct 13 Python
python 如何用map()函数创建多线程任务
Apr 07 Python
Python机器学习算法之决策树算法的实现与优缺点
May 13 Python
python 实现敏感词过滤的方法
Jan 21 #Python
python执行精确的小数计算方法
Jan 21 #Python
详解安装mitmproxy以及遇到的坑和简单用法
Jan 21 #Python
python dict 相同key 合并value的实例
Jan 21 #Python
关于python之字典的嵌套,递归调用方法
Jan 21 #Python
对python 合并 累加两个dict的实例详解
Jan 21 #Python
python去重,一个由dict组成的list的去重示例
Jan 21 #Python
You might like
攻克CakePHP系列二 表单数据显示
2008/10/22 PHP
PHP url 加密解密函数代码
2011/08/26 PHP
php中socket的用法详解
2014/10/24 PHP
PHP获取数组中重复最多的元素的实现方法
2014/11/11 PHP
PHP操作MongoDB实现增删改查功能【附php7操作MongoDB方法】
2018/04/24 PHP
php中的explode()函数实例介绍
2019/01/18 PHP
一个JS小玩意 几个属性相加不能超过一个特定值.
2009/09/29 Javascript
js 变量类型转换常用函数与代码[比较全]
2009/12/01 Javascript
javascript delete 使用示例代码
2010/03/29 Javascript
利用jQuary实现文字浮动提示效果示例代码
2013/12/26 Javascript
基于JavaScript实现动态创建表格和增加表格行数
2015/12/20 Javascript
通用无限极下拉菜单的实现代码
2016/05/31 Javascript
jQuery 更改checkbox的状态,无效的解决方法
2016/07/22 Javascript
详解为Angular.js内置$http服务添加拦截器的方法
2016/12/20 Javascript
Js apply方法详解
2017/02/16 Javascript
vue的token刷新处理的方法
2018/07/17 Javascript
一篇文章介绍redux、react-redux、redux-saga总结
2019/05/23 Javascript
vue计算属性+vue中class与style绑定(推荐)
2020/03/30 Javascript
Python使用迭代器打印螺旋矩阵的思路及代码示例
2016/07/02 Python
Python2/3中urllib库的一些常见用法
2017/12/19 Python
Python+selenium实现自动循环扔QQ邮箱漂流瓶
2018/05/29 Python
transform python环境快速配置方法
2018/09/27 Python
python将数据插入数据库的代码分享
2020/08/16 Python
使用CSS3实现SVG路径描边动画效果入门教程
2019/10/21 HTML / CSS
关于Java String的一道面试题
2013/09/29 面试题
this关键字的含义
2015/04/08 面试题
我的长生果教学反思
2014/04/28 职场文书
施工安全生产承诺书
2014/05/23 职场文书
基层党建工作汇报材料
2014/08/15 职场文书
工程部经理岗位职责
2015/02/02 职场文书
民事申诉状范本
2015/05/20 职场文书
靠谱准确的求职信
2019/04/02 职场文书
导游词之新疆尼雅遗址
2019/10/16 职场文书
详解jQuery的核心函数和事件处理
2022/02/18 jQuery
【海涛dota解说】DCG联赛第一周 LGD VS DH
2022/04/01 DOTA
JDK8中String的intern()方法实例详细解读
2022/09/23 Java/Android