文件名称:代理迭代-华为云大数据中台架构分享
文件大小:5.68MB
文件格式:PDF
更新时间:2024-07-01 05:00:24
Python cookbook 中文 参考
4.2 代理迭代 问题 你构建了一个自定义容器对象,里面包含有列表、元组或其他可迭代对象。 你 想直接在你的这个新容器对象上执行迭代操作。 解决方案 实际上你只需要定义一个 __iter__() 方法,将迭代操作代理到容器内部的对象 上去。比如: 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) # Example if __name__ == '__main__': root = Node(0) child1 = Node(1) child2 = Node(2) root.add_child(child1) root.add_child(child2) # Outputs Node(1), Node(2) for ch in root: print(ch) 在上面代码中, __iter__() 方法只是简单的将迭代请求传递给内部的 _children 属性。