在使用Python迭代器时出现错误:
class Fibs:
def __init__(self):
self.a = 0
self.b = 1
def next(self):
self.a,self.b = self.b,self.a + self.b
return self.a
def __iter__(self):
return self
fibs = Fibs()
for f in fibs:
if f > 1000:
print(f)
break
Traceback (most recent call last):
File "<pyshell#74>", line 1, in <module>
for f in fibs:
TypeError: iter() returned non-iterator of type 'Fibs'
我使用的python的版本是3.0,在Python3.0中迭代器的规则原来是发生了一些变化的。在新的迭代器规则中,迭代器对象应该实现__next__方法,而不是next。而新的内建函数next可以用于访问这个方法。
class Fibs:
def __init__(self):
self.a = 0
self.b = 1
def __next__(self):
self.a,self.b = self.b,self.a + self.b
return self.a
def __iter__(self):
return self
fibs = Fibs()
for f in fibs:
if f > 1000:
print(f)
break
1597
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)