现在自定义一个容器对象,其内含有列表、元组或其他可迭代对象。只需定义一个__iter()__方法,将迭代操作代理到容器内部的对象上去,即满足__iter()__方法返回一个实现了__next__()方法的迭代器对象。
class Node:def __init__(self, value):self._value = valueself._children = []def __repr__(self):return f"Node({self._value})"def add_child(self, node):self._children.append(node)def __iter__(self):# 定义__iter__实际调用了列表的__iter__()方法,因此变成一个可迭代对象return self._children.__iter__()nodes = Node(0)node1 = Node(1)node2 = Node(2)nodes.add_child(node1)nodes.add_child(node2)for node in nodes:print(node) # Node(1) Node(2)
