Python - реализовать __iter__ или вернуть список __iter__ - программирование
Подтвердить что ты не робот

Python - реализовать __iter__ или вернуть список __iter__

Я реализую то, что по сути является объектом контейнера (хотя у него есть немного собственной логики). Я хочу, чтобы иметь возможность перебирать элементы в поле этого класса (это просто обычный список). Должен ли я повторно реализовать __iter__ и next для моего класса или допустимо возвращать итератор списка, например:

class X:

    def __init__(self):
       self.list = []

    def __iter__(self):
        return self.list.__iter__()

Я немного уверен, что это приведет к нежелательному поведению.

4b9b3361

Ответ 1

Хорошо использовать итератор встроенного типа list. Я бы предложил не называть __iter__() явно, но, скорее, использовать встроенную функцию iter():

def __iter__(self):
    return iter(self.list)

Другим вариантом может быть вывод X из list. (В Python 2.x вы должны, по крайней мере, получить object.)