Ho un generatore che genera una serie, ad esempio:Generator.next() è visibile in python 3.0?
def triangleNums():
'''generate series of triangle numbers'''
tn = 0
counter = 1
while(True):
tn = tn + counter
yield tn
counter = counter + 1
in Python 2.6 sono in grado di effettuare le seguenti chiamate:
g = triangleNums() # get the generator
g.next() # get next val
tuttavia in 3,0 se eseguo le stesse due linee di codice che sto ottenendo il seguente errore:
AttributeError: 'generator' object has no attribute 'next'
ma, la sintassi del ciclo iteratore funziona a 3.0
for n in triangleNums():
if not exitCond:
doSomething...
Non ho ancora trovato nulla che spieghi questa differenza di comportamento per 3.0.
qualche idea per quale motivo Python 2 ha evitato la convenzione di Dunder per questi metodi in primo luogo? –
Probabilmente è solo una svista. –