Christopher Spears schreef: > How does this script work? > > #!/usr/bin/python > > class IteratorExample: > def __init__(self, s): > self.s = s > self.next = self._next().next > self.exhausted = 0 > def _next(self): > if not self.exhausted: > flag = 0 > for x in self.s: > if flag: > flag = 0 > yield x > else: > flag = 1 > self.exhausted = 1 > def __iter__(self): > return self._next()
I always use generator functions like this to achieve the same effect: def IteratorExample(): flag = 0 for x in s: if flag: flag = 0 yield x else: flag = 1 Much less boilerplate and behind-the-scenes bookkeeping, so it's easier to type and understand. Result is the same: >>> a = IteratorExample('edcba') >>> for x in a: print x d b >>> a = IteratorExample('edcba') >>> print a.next() d >>> print a.next() b >>> print a.next() Traceback (most recent call last): File "<pyshell#82>", line 1, in -toplevel- print a.next() StopIteration -- If I have been able to see further, it was only because I stood on the shoulders of giants. -- Isaac Newton Roel Schroeven _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor