In the tutorial there is an example iterator class that revesrses the string given to the constructor. The problem is that this class works only once, unlike built-in types like string. How to modify it that it could work several times? I have tried two approaches. They both work, but which of them is stylistically better?
class Reverse: #original one "Iterator for looping over a sequence backwards" def __init__(self, data): self.data = data self.index = len(data) def __iter__(self): return self def next(self): if self.index == 0: raise StopIteration self.index = self.index - 1 return self.data[self.index] class Reverse: #1st approach "Reuseable Iterator for looping over a sequence backwards" def __init__(self, data): self.data = data self.index = len(data) def __iter__(self): return self def next(self): if self.index == 0: self.index = len(self.data) #Reset when previous # iterator goes out raise StopIteration self.index = self.index - 1 return self.data[self.index] class Reverse: #2nd approach "Reuseable Iterator for looping over a sequence backwards" def __init__(self, data): self.data = data def __iter__(self): self.index = len(self.data) #Reset as a part of iterator # creation return self def next(self): if self.index == 0: raise StopIteration self.index = self.index - 1 return self.data[self.index] -- http://mail.python.org/mailman/listinfo/python-list