[Python] Iteratori iterabile

Franky gmail fgthct a gmail.com
Mer 5 Lug 2017 20:53:44 CEST


Ciao,

Leggendo la pep-0234, in sintesi un oggetto iteratore deve avere due 
metodi: oggetto.__iter__() e oggetto.__next__). correggetemi se ho 
inteso male.

faccio un esempio:

creo una lista lista=['pippo', 'pluto', 'paperoga']

hasattr(lista,'__iter__') # vero

hasattr(lista,'__next__') # falso

quindi una lista (succede la stessa cosa anche con un set) non è un 
iteratore perchè non possiede entrambi i metodi sopraccitati. Però se 
creo un oggetto di tipo lista, possiede entrambi i metodi:

lista1 = lista.__iter__()

hasattr(lista1,'__iter__')    #vero

hasattr(lista1,'__next__')    #vero

lista1.__next__()

'pippo'

lista1.__next__()

'pluto'

lista1.__next__()

'paperoga'

lista1.__next__()

StopIteration

Devo desumere che le istanze di un iterabile non iteratore possono 
essere iteratori?

grazie per la pazienza







Maggiori informazioni sulla lista Python