darktrym hat geschrieben:Letzten Endes hab ich die Lösung über Ausnahmebehandlung von Attributerror und .__next__ bzw. .next gewählt. Finde diesen aber wegen den illegalen Zugriff ein wenig unschön.
Illegaler Zugriff? Hast du Angst, verhaftet zu werden?
Wie würde man das richtig machen?
Versuch es mal so:
Code: Alles auswählen
>>> def foo():
... for i in range(3):
... yield i
...
>>> ns = foo()
>>> advance = lambda: next(ns)
>>> advance()
0
>>> advance()
1
>>> advance()
2
>>> advance()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 1, in <lambda>
StopIteration
Ausprobiert in Python 2.7 und 3.2. Den Namen
advance() habe ich gewählt, damit das Builtin
next() nicht überschrieben wird.
In specifications, Murphy's Law supersedes Ohm's.