Каковы методы класса итерации next () и __next __ () for, и в чем разница?

Я немного теряюсь на итераторах python. Иногда я их использую, но я не помню, чтобы сам был создан. Я где-то читал, что не помню, где, например, такой код:

class Foo(object): def __init__(self): self.something = "initial_value" def __iter__(self): return self def next(self): # I don't quite remember what was here :S return self.something 

Я предполагаю, что __iter__() должен возвращать итератор, и что итератор должен иметь следующий метод правильно? Тогда как насчет __next__() ? это для прямого итерации над классом, не возвращая другой итератор с __iter__() метода __iter__() ?

2 Solutions collect form web for “Каковы методы класса итерации next () и __next __ () for, и в чем разница?”

PEP 3114 переименовал iterator.next() в iterator.__next__() . Это было реализовано в версии 3.0. В приведенной выше ссылке содержатся все детали.

next был переименован в __next__ в Python 3. Что касается того, что он делает, он должен вернуть следующий элемент или повысить StopIteration если их больше нет.

Python - лучший язык программирования в мире.