看了很多解释,都是在拿迭代器,讲解可迭代对象,然后写写代码,就完了。完全不懂内部实现。
花了很久,终于找到内部实现了,也就是搞懂了,用 for 去遍历可迭代对象时,拿的数据到底在哪里。
class Add:
def __init__(self):
self.base = 0
def __iter__(self):
return self
def __next__(self):
self.base += 1
return self.base
谢了__iter__方法,便是指定了它是一个可迭代对象。
而__next__方法,便是产生可迭代数据的。
add1 = Add()
print(add1.__next__())
print(add1.__next__())
print(add1.__next__())
1
2
3
add2 = Add()
for i in add2:
if i > 10:
break
print(i)
1
2
3
4
5
6
7
8
9
10