# 返回多个独立的可迭代对象 class MultiIterator: def __init__(self, wrapped): self.wrapped = wrapped # 封装将被迭代的对象 def __iter__(self): return Next(self.wrapped) # 返回独立的可迭代对象 # 自身的迭代器 class Next: def __init__(self, wrapped): self.wrapped = wrapped self.offset = 0 def __iter__(self): return self def __next__(self): # 返回下一个元素 if self.offset >= len(self.wrapped): raise (StopIteration) else: item = self.wrapped[self.offset] self.offset += 1 return item # 返回指定索引位置处的元素 if __name__ == "__main__": string = "abc" s = MultiIterator(string) for x in s: for y in s: print(x + y, end=" ")
每个for循环自动调用__iter__,都会创建一个独立得迭代器