[Python-Dev] metaclass insanity
Just van Rossum
just@letterror.com
Tue, 5 Nov 2002 09:16:32 +0100
Alex Martelli wrote:
> class Outer:
> [snip snip]
> def __iter__(self):
> class Inner:
> def __init__(self, outer):
> self.outer = outer
> def __iter__(self):
> return self
> def next(self):
> if self.outer.isAtEnd():
> raise StopIteration
> else:
> result = self.outer.currentState()
> self.outer.advanceState()
> return result
> return Inner(self)
While I'm sure this was just a theoretical example, _this_ specific case is much
easier written as a generator (and I _love_ the idiom of making the __iter__
method a generator, I think it's underused...).
class Outer:
[snip snip]
def __iter__(self):
while not self.isAtEnd():
result = self.outer.currentState()
self.outer.advanceState()
yield result
Just