Каковы методы класса итерации 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 - как динамически назначать self.next в новом классе стилей?
  • Селектор итератора в Python
  • python - допустимый размер итератора?
  • hasNext в итераторах Python?
  • Что такое интерфейс для итераторов python?
  • Итераторы Python / один лайнер для цикла
  • Итерировать итератор кусками (из n) в Python?
  • Я не могу найти imap () в itertools в Python
  • Каков наилучший способ пропускать значения N переменной итерации в Python?
  • Группировать итерируемый предикатом в Python
  • Элементы группы списка с python размера шага?
  • Python - лучший язык программирования в мире.