小编oll*_*lyc的帖子

Python迭代器 - 如何在新样式类中动态分配self.next?

作为一些WSGI中间件的一部分,我想编写一个包含迭代器的python类,以在迭代器上实现close方法.

当我尝试使用旧式类时,这可以正常工作,但是当我尝试使用新式类时会抛出TypeError.我需要做些什么来使用新式的类?

例:

class IteratorWrapper1:

    def __init__(self, otheriter):
        self._iterator = otheriter
        self.next = otheriter.next

    def __iter__(self):
        return self

    def close(self):
        if getattr(self._iterator, 'close', None) is not None:
            self._iterator.close()
        # other arbitrary resource cleanup code here

class IteratorWrapper2(object):

    def __init__(self, otheriter):
        self._iterator = otheriter
        self.next = otheriter.next

    def __iter__(self):
        return self

    def close(self):
        if getattr(self._iterator, 'close', None) is not None:
            self._iterator.close()
        # other arbitrary resource cleanup code here

if __name__ == "__main__":
    for i in IteratorWrapper1(iter([1, 2, 3])):
        print i

    for …
Run Code Online (Sandbox Code Playgroud)

python iterator

12
推荐指数
2
解决办法
4923
查看次数

标签 统计

iterator ×1

python ×1