Das Iterator-Protokoll
Swipe um das Menü anzuzeigen
In Python ist das Iterator-Protokoll eine Sammlung von Methoden, die es Objekten ermöglicht, iteriert zu werden, sodass sie mit Konstrukten wie for-Schleifen kompatibel sind. Die beiden wesentlichen Methoden sind __iter__ und __next__. Wenn eine for-Schleife auf ein Objekt angewendet wird, ruft Python intern die __iter__-Methode des Objekts auf, um einen Iterator zu erhalten. Dieser Iterator muss eine __next__-Methode besitzen, die bei jedem Aufruf das nächste Element der Sequenz zurückgibt. Wenn keine weiteren Elemente vorhanden sind, muss __next__ eine StopIteration-Ausnahme auslösen, um das Ende der Sequenz anzuzeigen.
1234567891011121314151617181920212223242526class SquaresIterator: # Initialize with the number of squares to generate def __init__(self, limit): self.limit = limit self.current = 0 # Return the iterator object (itself) def __iter__(self): return self # Return the next square, or stop if done def __next__(self): if self.current < self.limit: # Calculate square result = self.current ** 2 # Move to next number self.current += 1 return result # If no more items else: raise StopIteration for square in SquaresIterator(5): print(square)
__init__ – Initialisierungsphase
Beim Erstellen des Iterators erhält er:
-
limit→ wie viele Zahlen generiert werden sollen; -
Es wird
current = 0gesetzt → der Startwert; -
Es werden alle notwendigen Vorbereitungen für die Iteration getroffen.
__iter__ – Iterierbarkeit herstellen
- Gibt
self(das Objekt selbst) zurück; - Ermöglicht die Verwendung in einer for-Schleife.
__next__ – Werte erzeugen
Diese Methode wird jedes Mal ausgeführt, wenn die Schleife das nächste Element anfordert:
- Wenn
current<limit:- Berechnung von
current²; - Erhöhung von
currentum 1; - Rückgabe des Ergebnisses.
- Berechnung von
- Wenn
current≥limit:- Auslösen von
StopIteration, um die Schleife automatisch zu beenden.
- Auslösen von
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen