装的是python3.9的解释器, 在写python迭代器时报错TypeError: iter() returned non-iterator of type 'int'
class Gen(object): def __iter__(self): self.a=10 return self.a #此处应该直接返回self def __next__(self): self.a += 1 return self.a if __name__ == '__main__': g = Gen() gen = iter(g) print(g) print(next(gen)) print(next(gen)) print(next(gen)) print(next(gen))
原来是__iter__方法中返回值错误,应该返回self,而不应该是self.a
def __iter__(self): self.a=10 return self
运行结果如下:
<__main__.Gen object at 0x0157E328> 11 12 13 14