[Python-Dev] metaclass insanity
05 Nov 2002 09:58:21 -0500
Just van Rossum <firstname.lastname@example.org> writes:
> > > class Outer:
> > > [snip snip]
> > > def __iter__(self):
> > > while not self.isAtEnd():
> > > result = self.outer.currentState()
> > > self.outer.advanceState()
> > > yield result
> [David Abrahams]
> > This only works for 'self-iterable' types like files, right?
> No, the generator-iterator can hold state in the form of local variables. That
> isn't used in this example, though.
> > Hey, wait a sec!
> > It doesn't surprise me at all that the above is more compact. I don't
> > see any next() interface, nor any raising of StopIteration. Does it
> > really satisfy the iterator protocol?
> Heh, yeah, that's what generators do. You call a generator-function (like the
> __iter__() method above) and it returns a generator-iterator. The magic word is
email@example.com * http://www.boost-consulting.com