[TOC] >[success] # 迭代一个对象__iter()__ ~~~ 1.当我们想迭代一个对象的时候,可以在写类时候,编写一个__iter()__,指定迭代数属性或者方法 ~~~ >[danger] ##### 使用迭代器 ~~~ 1.迭代器可以跟next 搭配使用,也可以跟for使用 2.for 使用不用关心 StopIteration的问题 ~~~ ~~~ li = [1, 2, 3, ] lt = iter(li) # 第一种情况 每次出来一个 print(next(lt)) # 遍历整个 迭代器 for i in lt: print(i) ~~~ >[danger] ##### 在类里面声明一个迭代器 ~~~ 1.定义了两个私有的属性,分别是_value 和一个私有的列表_children 2.编写了一个 专门负责往私有的属性_children 添加的add_children 方法 3.创建了一个可迭代的对象 __iter__ 方法,返回的是私有的children 列表内容 4.__repr__ 就是对象可以按照指定的字符串格式输出 5.用for 循环去循环对象 ~~~ ~~~ class Node: def __init__(self, value): self._value = value self._children = [] def __repr__(self): return 'Node({!r})'.format(self._value) def add_children(self, node): self._children.append(node) def __iter__(self): return iter(self._children) if __name__ == "__main__": root = Node(0) child1 = Node(1) child2 = Node(2) root.add_children(child1) root.add_children(child2) for ch in root: print(ch) 打印结果: Node(1) Node(2) ~~~