[00402]代理迭代

来源:互联网 发布:淘宝咸鱼pc搜索工具 编辑:程序博客网 时间:2024/04/29 15:12

代理迭代

一、 解决问题

你构建了一个自定义容器对象,里面包含有列表、元组或其他可迭代对象。 你想直接在你的这个新容器对象上执行迭代操作。

二、解决方案

> __iter__() 重写这个方法

三、代码说明

#!/usr/bin/env pythonclass Node:    def __init__(self, value):        self._value = value        self._children = []    def __repr__(self):        return "Node({!r})".format(self._value)    def add_child(self, node):        self._children.append(node)    def __iter__(self):        return iter(self._children)if __name__ == "__main__":    root = Node(0)    c1 = Node(1)    c2 = Node(2)    root.add_child(c1)    root.add_child(c2)    for ch in root:        print (ch)

四、关联知识

五、总结

1. Python 的迭代器协议需要__iter__() 方法返回一个实现了__next__() 方法的迭代器对象。2. iter() 函数的使用简化了代码,iter(s) 只是简单的通过调用s.__iter__() 方法来返回对应的迭代器对象

六、代码地址

github地址:https://github.com/weichen666/python_cookbook
目录/文件:fourth_selection/learn_iter_iter.py

七、参考

0 0
原创粉丝点击