[00402]代理迭代

代理迭代

一、 解决问题

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

二、解决方案

> __iter__() 重写这个方法

三、代码说明

#!/usr/bin/env python

class 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值