class Square:
def __init__(self,start,stop):
self.value = start - 1
self.stop = stop
def __iter__(self):
return self
def next(self):
if self.value == self.stop:
raise StopIteration
self.value += 1
return self.value ** 2
for i in Square(1,4):
print i,
哪个输出
1 4 9 16
答案 0 :(得分:1)
为什么不呢?它对我来说看起来像是一个普通的迭代器......
next()
方法是python中的一种“已知”方法,它与__iter__()
方法一起发出信号。
答案 1 :(得分:1)
这是一个Python迭代器:每次循环时都会调用next()方法
答案 2 :(得分:1)
这是一个迭代器。
通常情况下,你会用yield来写它。
def Square(start, stop):
for value in xrange(start, stop + 1):
yield value ** 2
for i in Square(1, 4):
print i,
答案 3 :(得分:0)
典型的Python迭代协议:for y in x...
如下:
iter = x.__iter__() # get iterator
try:
while 1:
y = iter.next() # get each item
... # process y
except StopIteration: pass # iterator exhausted
这 http://www.boost.org/doc/libs/1_41_0/libs/python/doc/tutorial/doc/html/python/iterators.html