In Python, das Iterationsprotokoll ist ein bestimmter Weg, wie ein Objekt seine Elemente nacheinander zurückgeben muss. Es besteht aus zwei grundlegenden Teilen:
- Der Iterable: Ein Objekt, das man übergehen (oder iterieren) kann, wird als iterable bezeichnet. Strings, Listen oder Tupel sind Beispiele für solche iterierbaren Objekte. Ein iterables muss eine Methode namens `__iter__ ()` implementieren, die einen Iterator zurückgeben muss.
- Der Iterator: Der Iterator ist das Objekt, das tatsächlich die Iteration durchführt. Ein Iterator muss eine Methode namens `__next__ ()` implementieren, die das nächste Element der Iterable zurückgibt. Wenn es keine weiteren Elemente gibt, sollte sie `StopIteration` auslösen.
Beispiel:
```python
class MyNumbers:
def __iter__(self):
self.a = 1
return self
myclass = MyNumbers()
myiter = iter(myclass)
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
```
Dieses Beispiel zeigt eine Klasse, die das Iterationsprotokoll implementiert, in diesem Fall, sie gibt nacheinander die natürlichen Zahlen zurück. Jedes Mal, wenn die Funktion `next()` aufgerufen wird, gibt der Iterator das nächste Element zurück.
Das Iterationsprotokoll ist der Kern aller Schleifen in Python und es wird auch von vielen Funktionen und Konstrukten verwendet, die auf irgendeine Art und Weise auf Sequenzen arbeiten.