Thomas Moore wrote: > But what I really want to know is how to use __iter()__ and next() in a > class with an example.
here's a simple iterator class that iterators over itself once: class Iterator1: def __init__(self, size=10): self.count = 0 self.size = size def __iter__(self): return self def next(self): count = self.count + 1 if count >= self.size: raise StopIteration self.count = count return count it = Iterator1() print it for i in it: print i for i in it: print i if you run this, you'll see that only the first for-statement will actually print anything. when you loop over the iterator again, it's already ex- hausted. here's a more general variant, where the Iterable class can be iterated over several times. to do this, its __iter__ method uses a separate helper class to do the actual iteration: class Iterable2: def __init__(self, size=10): self.size = size def __iter__(self): return Iterator2(self) class Iterator2: def __init__(self, target): self.target = target self.count = 0 def __iter__(self): return self def next(self): count = self.count + 1 if count >= self.target.size: raise StopIteration self.count = count return count it = Iterable2() print it for i in it: print i for i in it: print i to get a better view of what happens when you run the code, try adding print statements to the __iter__ and next methods. hope this helps! </F> -- http://mail.python.org/mailman/listinfo/python-list