Python3关与迭代器next()使用为__next__()的一点注意事项

来源:互联网 发布:淘宝拍摄摄影软件 编辑:程序博客网 时间:2024/06/03 18:23
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
关于如上Python2 代码中迭代器的使用,引用时用*.next()的方式在Python3中不再有效,而是会报错:
Traceback (most recent call last):  File "<pyshell#17>", line 1, in <module>    it.next()AttributeError: 'list_iterator' object has no attribute '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
以next(it)的形式进行引用
0 0
原创粉丝点击