2014-09-07 3 views
2

Я пытаюсь передать свой собственный объект MyIter() определяется следующим образом в iter() функции (с использованием Python 3+)ИТЭР() Функция не принимает пользовательские Iterable объект

class MyIter(): 
    def __iter__(self): 
     return self 

Я не пишу __next__ но просто хочу вернуть итерируемый объект Очевидно, что это не работает. Мое сомнение в том, почему я могу передать что-то вроде строки в функцию iter(), даже если строки не имеют объекта __next__, но не мой пользовательский объект.

Например, iter("sample") возвращает str_iterator, хотя str не имеет метода __next__.

ответ

3

"123".__iter__() возвращает объект str_iterator, который реализует __next__().

+0

Это очищает его –

Смежные вопросы