Just van Rossum wrote: > Iterator: > - heeft een .next() method die het volgende ding returnt, of > StopIteration raised als er geen volgend ding is. > - heeft een __next__() method die self returnt (waarmee elke iterator > dus gelijk ook een iterable is). > > Jouw class was geen iterator, want de .next() method returnde niet "het > volgende item" en de __next__ method returnde niet self. Het was wel een > iterable, dus het werkte wel in de context van een for loop.
En om het nog wat verder te verwarren: je bedoelt waarschijnlijk dat een Iterator een __iter__ method heeft, die voor een Iterator terug geeft (een .next method heeft); Iterators kunnen daar dus self terug geven. :) Voor de duidelijkheid: elke callable (function, method, __call__ method) dat het keyword 'yield' gebruikt, geeft bij aanroepen een Generator Iterator terug. Zie http://docs.python.org/ref/yield.html. Vandaar dat je voor __iter__ ook een method kan begruiken dat het yield statement gebruikt, want dan geeft aanroep van zo'n methode een Iterator terug. Martijn Pieters _______________________________________________ Python-nl mailing list Python-nl@python.org http://mail.python.org/mailman/listinfo/python-nl