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ýnimkuStopIteration, 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.