Stavo ripassando le classi e la programmazione a oggetti su python (che già avevo studiato su java), ho visto che ci sono delle classi "di tipo" iteratore
Mi sono imbattuto in questo esempio che stampa i numeri pari di una lista ma non ho ben chiaro alcuni concetti:
Se non ho capito male con __init__ inizializzo le variabili dell'oggetto passando il valore della lista da scorrere mentre il metodo __next__ viene richiamato ed eseguito implicitamente durante il ciclo for
Non ho capito invece __iter__ a cosa serva...
Mi domando perchè creare una classe iteratore quando si sarebbe potuto realizzare un codice simile:
oppure creare una classe StampaLista con una
Non so se mi sono spiegato bene ma sono un po' confuso su questo argomento
Mi sono imbattuto in questo esempio che stampa i numeri pari di una lista ma non ho ben chiaro alcuni concetti:
Python:
numeri = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
class Pari:
def __init__(self, numeri):
self.numeri = numeri
self.index = 0
def __iter__(self):
return self
def __next__(self):
while self.index < len(self.numeri):
if self.numeri[self.index] % 2 == 0:
valore = self.numeri[self.index]
self.index += 1
return valore
else:
self.index += 1
raise StopIteration
iteratore_pari = Pari(numeri)
for numero in iteratore_pari:
print(numero)
Se non ho capito male con __init__ inizializzo le variabili dell'oggetto passando il valore della lista da scorrere mentre il metodo __next__ viene richiamato ed eseguito implicitamente durante il ciclo for
Non ho capito invece __iter__ a cosa serva...
Mi domando perchè creare una classe iteratore quando si sarebbe potuto realizzare un codice simile:
Python:
numeri = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for numero in numeri:
if numero % 2 == 0: print(numero)
def stampaPari(lista)
che esegue la stampa dei numeri con la possibilità di aggiungere nella classe un'altra def stampaDispari(lista)
?Non so se mi sono spiegato bene ma sono un po' confuso su questo argomento