在下面的代码中,我很困惑为什么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
答案 0 :(得分:1)
要获得print 'Hi3'
,您需要通过return self.start
声明。请记住,return
语句会立即退出函数。 (也许你混淆了迭代器和生成器,并考虑了yield而不是return
。)