问题描述
class Squares:
def __init__(self,start,stop):
self.start = start
self.stop = stop
def __iter__(self):
return self
def __next__(self):
if self.start > self.stop:
raise stopiteration
else:
self.start = self.start ** 2
return self.start
for i in Squares(1,10):
print(i)
但是最后,通过执行上述代码,我们意识到从起点创建了一个无限循环,而next方法不能正确地控制迭代过程。
解决方法
将self.start
加1,然后返回其平方数:
class Squares:
def __init__(self,start,stop):
self.start = start
self.stop = stop
def __iter__(self):
return self
def __next__(self):
if self.start > self.stop:
raise StopIteration
else:
res = self.start ** 2
self.start = self.start + 1
return res
for i in Squares(1,10):
print(i)
出局:
1
4
9
16
25
36
49
64
81
100