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țieStopIterationatunci 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.