博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 3 中建立可迭代对象(making object iterable)
阅读量:7062 次
发布时间:2019-06-28

本文共 783 字,大约阅读时间需要 2 分钟。

Python中的for语句用起来很爽,但是要求 in后面的对象iterable,python中的很多对象支持,如list, tuple, dict。

如果要让自己的类对象也iterable怎么办,究竟如何才算iterable object呢?其实,自已也可以定义特殊的方法来使自定义类支持这种操作。

 第一种方法很简单,就是实现一个特殊函数__getitem__

 

第二种方法,也是实现一个特殊函数__iter__,此函数要求返回一个iterator对象,对于iterator对象的要求就是实现特殊函数 __next__,所以一般的做法就是类同时实现__iter__和__next__,然后在__iter__中返回自己。__next__函数要求依次 返回需要迭代的项目,结束后raise StopIteration,说着很乱,直接上代码,更清晰:

class MyIterator():    def __init__(self,*items):        self._items=list(items);        self._index=-1;    def __next__(self):        self._index+=1;        if self._index 

 

 

 

第二种方法应该是推荐的做法,不过python的版本不同,要求也不同,在python 3中必须是__next__,否则就报TypeError,在python2.6版本则必须实现next()方法; 为了兼容的话,可以同时定义一个next()方法:

def next(self):        return self.__next__();

 

 

 

 

转载于:https://www.cnblogs.com/dajianshi/archive/2013/01/07/2849672.html

你可能感兴趣的文章
pip 安装报utf-8错解决办法
查看>>
django 中form在html中的简单使用
查看>>
lync 2013标准版安装
查看>>
WebService基础介绍
查看>>
jdbc的使用
查看>>
云计算概念--公有云和私有云介绍
查看>>
托管代码
查看>>
Glusterfs hacker guide(三)
查看>>
谈epoll与高性能
查看>>
验证下载文件
查看>>
python输出%
查看>>
Json字符串转换为java对象的各种实现方法【json_lib框架、Gson、org.json】
查看>>
Cesium官方教程8-- 几何体和外观效果
查看>>
《×××颂》突破了千年国画技艺的难点
查看>>
Oracle 等待事件之 db file sequential read
查看>>
LoadRunner启动自带例子Web Tours报错
查看>>
致血气方刚的产品经理:如何不被程序员嫌弃
查看>>
导出文件名带时间信息的dmp文件
查看>>
zencart简单设置分类链接不同css样式
查看>>
4、移植三星官方内核
查看>>