Junior — Middle
Wat is de rol van speciale methoden (dunder) bij de implementatie van generators en hun gebruik in Python?
sobes.tech AI
Antwoord van AI
In Python spelen speciale methoden (dunder-methoden), zoals __iter__(), __next__(), een sleutelrol in de implementatie van generators en iterators.
Generators zijn objecten waarmee je over een reeks waarden kunt itereren, door ze te berekenen wanneer dat nodig is, in plaats van meteen.
__iter__()geeft de iterator van het object terug (vaak het object zelf).__next__()geeft het volgende element van de reeks terug of werpt eenStopIteration-uitzondering wanneer de elementen op zijn.
Wanneer je een generator maakt met behulp van een functie met het sleutelwoord yield, maakt Python automatisch een generatorobject met deze methoden.
Voorbeeld van een eenvoudige iterator-implementatie met behulp van dunder-methoden:
class CountUpTo:
def __init__(self, max):
self.max = max
self.current = 0
def __iter__(self):
return self
def __next__(self):
if self.current >= self.max:
raise StopIteration
self.current += 1
return self.current
for number in CountUpTo(3):
print(number)
Op deze manier zorgen dunder-methoden voor het iteratieprotocol, dat de basis vormt voor generators en het gebruik ervan in lussen en andere constructies die werken met iterabele objecten mogelijk maakt.