作为一些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 …