如何多次使用生成器

我们知道,生成器返回的迭代器只能被从头到尾遍历一遍,之后再遍历就会报StopIteration异常,那么怎么样才能重复使用生成器呢。

其实只要写一个类,把生成器定义在类的__iter__方法中,之后重复使用这个类的实例就行了,因为诸如sum()、for in 循环等函数都是调用了对象内置的__iter__方法来获得迭代器的。

class ReadVisits():

        def __init__(self.data):

                self.data = data

        def __iter__(self):

                for i in data:

                    yield i

你可能感兴趣的:(如何多次使用生成器)