Mam generator, który generuje szereg, na przykład:Czy generator.next() jest widoczny w pythonie 3.0?
def triangleNums():
'''generate series of triangle numbers'''
tn = 0
counter = 1
while(True):
tn = tn + counter
yield tn
counter = counter + 1
w Pythonie 2.6 Jestem w stanie wykonać następujące połączenia:
g = triangleNums() # get the generator
g.next() # get next val
jednak w 3,0 gdybym wykonać te same dwie linie kodu dostaję następujący błąd:
AttributeError: 'generator' object has no attribute 'next'
ale składnia pętli iteracyjnej działa w 3,0
for n in triangleNums():
if not exitCond:
doSomething...
Nie udało mi się znaleźć niczego, co tłumaczy tę różnicę w zachowaniu w wersji 3.0.
jakikolwiek pomysł, dlaczego Python 2 wyeliminował konwencję dunder dla tych metod w pierwszej kolejności? –
To prawdopodobnie tylko niedopatrzenie. –