迭代器即实现__iter__方法的对象,
例如下面的DataLoader
方法1的__iter__方法使用yield完成了迭代
其中方法2的__iter__方法直接返回对象本身,而对象本身包括__next__方法,调用时自动使用
实例化之后,可以it.__next__()或者next(it),得到结果都相同
另外内置函数
第一种方法,在__iter__方法中迭代
class DataLoader:
def __init__(self):
self.a = 0
#def __next__(self):
# self.a += 1
# return self.a
def __iter__(self):
while True:
self.a += 1
yield self.a
第二种方法,__iter__返回对象,对象包括__next__
class DataLoader:
def __init__(self):
self.a = 0
def __next__(self):
self.a += 1
return self.a
def __iter__(self):
return self
两种方法结果相同