Sobes.tech
Junior — Middle

Care este rolul metodelor speciale (dunder) în implementarea generatorilor și utilizarea lor în Python?

sobes.tech AI

Răspuns de la AI

În Python, metodele speciale (metodele dunder), precum __iter__(), __next__(), joacă un rol cheie în implementarea generatorelor și iteratorilor.

Generatorii sunt obiecte care permit iterarea peste o secvență de valori, calculându-le după nevoie, nu imediat.

  • __iter__() returnează iteratorul obiectului (adesea chiar obiectul însuși).
  • __next__() returnează următorul element din secvență sau ridică o excepție StopIteration atunci când elementele s-au terminat.

Când creezi un generator folosind o funcție cu cuvântul cheie yield, Python creează automat un obiect generator cu aceste metode.

Exemplu de implementare a unui iterator simplu folosind metode dunder:

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)

Astfel, metodele dunder asigură protocolul de iterație, care stă la baza generatorilor și permite utilizarea lor în bucle și alte construcții care lucrează cu obiecte iterabile.