versuche gerade ein Programmbeispiel zu verstehen.
Code: Alles auswählen
class Fibonacci(object):
def __init__(self, max_n):
self.MaxN = max_n
self.N = 0
self.A = 0
self.B = 0
def __iter__(self):
self.N = 0
self.A = 0
self.B = 1
return self
def next(self):
if self.N < self.MaxN:
self.N += 1
self.A, self.B = self.B, self.A + self.B
return self.A
else:
raise StopIteration
Code: Alles auswählen
>>> for f in Fibonacci(14):
print f,
1 1 2 3 5 8 13 21 34 55 89 144 233 377
http://openbook.galileocomputing.de/pyt ... 8c937ad98d
Ich kann zwar die Logik für die Fibonacci Zahlen nachvollziehen aber mir wird dabei die Rolle von __iter__ nicht ganz klar.
Die Erklärung im Buch deute ich so das eine for Schleife einen iter-Container einfacher als sonst durchlaufen kann. Wobei ich dieses "als sonst" nicht ganz begreife.
Der Konstruktor von class Fibonacci definiert 4 Variablen und A, B und N sind dann wohl frei in ihrer Definition weil __iter__ automatisch feststellt um welche Art von Variablen es sich handelt. Dadurch können diese ohne weitere Bestimmung von 'next' weiterverarbeitet werden.
Habe ich das so einigermaßen verstanden? Aber gibt es vielleicht noch andere Beispiele dir mir den Sinn des ganzen näher bringen können.
Grüss,