Sobes.tech
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 izuzetak StopIteration kada 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.