在下面的代码中,我很困惑为什么 Hi3
永远不会被打印:
class Counter(object):
def __init__(self, size):
self.size = size
self.start = 0
def __iter__(self):
print "called __iter__", self.size
return self
def next(self):
if self.start < self.size:
print 'Hi1'
self.start = self.start + 1
print 'Hi2'
return self.start
print 'Hi3'
raise StopIteration
c = Counter(2)
for num in c:
print num
最佳答案
要到达print 'Hi3'
,您需要经过return self.start
语句。请记住,return
语句会立即退出该函数。 (也许您混淆了迭代器和生成器,并想到 yield 而不是 return
)。
关于python - 了解用户定义的迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27392344/