Sobes.tech
Junior — Middle

Akú úlohu zohrávajú špeciálne metódy (dunder) pri implementácii generátorov a ich použití v Pythone?

sobes.tech AI

Odpoveď od AI

V Pythone zohrávajú špeciálne metódy (dunder metódy), ako __iter__(), __next__(), kľúčovú úlohu pri implementácii generátorov a iterátorov.

Generátory sú objekty, ktoré umožňujú iteráciu cez sekvenciu hodnôt, vypočítavajúc ich podľa potreby, nie okamžite.

  • __iter__() vracia iterátor objektu (často sám seba).
  • __next__() vracia nasledujúci prvok sekvencie alebo vyvolá výnimku StopIteration, keď sú prvky vyčerpané.

Keď vytvoríte generátor pomocou funkcie so slovom kľúčom yield, Python automaticky vytvorí objekt generátora s týmito metódami.

Príklad implementácie jednoduchého iterátora s použitím dunder metód:

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)

Takto, dunder metódy zabezpečujú protokol iterácie, ktorý je základom generátorov a umožňuje ich použitie v slučkách a iných konštrukciách, ktoré pracujú s iterovateľnými objektmi.