Junior — Middle
Koja je uloga posebnih metoda (dunder) u implementaciji generatora i njihovoj upotrebi u Pythonu?
sobes.tech АИ
Одговор од АИ
У Python-u, posebne metode (dunder metode), kao što su __iter__(), __next__(), igraju ključnu ulogu u implementaciji generatora i iteratora.
Generatori su objekti koji omogućavaju iteraciju kroz sekvencu vrednosti, izračunavajući ih po potrebi, a ne odmah.
__iter__()vraća iterator objekta (često sam objekat).__next__()vraća sledeći element sekvence ili izaziva izuzetakStopIterationkada su elementi iscrpljeni.
Kada kreirate generator pomoću funkcije sa ključnom rečju yield, Python automatski kreira objekat generatora sa ovim metodama.
Primer implementacije jednostavnog iteratora koristeći dunder metode:
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)
Na ovaj način, dunder metode obezbeđuju protokol iteracije, koji je osnova generatora i omogućava njihovu upotrebu u petljama i drugim konstrukcijama koje rade sa iterabilnim objektima.