有谁能解释一下为什么下面的代码
TypeError: iter() returned non-iterator of type 'counter' in python 3这在python2.7.3中运行,没有任何错误。
#!/usr/bin/python3
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:
self.start=self.start+1
return self.start
raise StopIteration
c=counter(10)
for x in c:
print(x)发布于 2015-01-30 23:10:03
在python3.x中,您需要使用__next__()而不是next()。
佩普3114:标准的next()方法已经重命名为__next__()。
但是,如果您希望您的对象在python2.x和3.X中都是可迭代的,则可以将next函数分配给名称__next__。
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:
self.start=self.start+1
return self.start
raise StopIteration
__next__ = next # Python 3.X compatibility发布于 2015-01-30 23:10:58
您需要的是__next__(self),而不是下一步:
def __next__(self): https://stackoverflow.com/questions/28246107
复制相似问题