Python - реализовать __iter__ или вернуть список __iter__ - PullRequest
18 голосов
/ 26 февраля 2012

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

class X:

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

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

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

1 Ответ

24 голосов
/ 26 февраля 2012

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...