[Python-Dev] metaclass insanity (original) (raw)
David Abrahams dave@boost-consulting.com
05 Nov 2002 09:58:21 -0500
- Previous message: [Python-Dev] metaclass insanity
- Next message: [Python-Dev] metaclass insanity
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Just van Rossum <just@letterror.com> writes:
[JvR] > > 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.
Ahh, closures...
[later] > 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 "yield".
Too cool!
-- David Abrahams dave@boost-consulting.com * http://www.boost-consulting.com
- Previous message: [Python-Dev] metaclass insanity
- Next message: [Python-Dev] metaclass insanity
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]