Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 26, 2014 17:57:15

Boris875
Зарегистрирован: 2014-02-16
Сообщения: 32
Репутация: +  0  -
Профиль   Отправить e-mail  

Реализация итератора

Есть примерно вот такой класс

class Test():
    def __init__(self, a, b):
        self.a = a
        self.b = b
    def __getitem__(self, key):
        return getattr(self, key)
    def __setitem__(self, key, value):
        setattr(self, key, value)

Подскажите как сделать, чтобы он поддерживал итерации, то есть чтобы в цикле можно было пройтись по всем его атрибутам?

Офлайн

#2 Ноя. 26, 2014 21:15:09

Paranoia_Agent
Зарегистрирован: 2014-06-25
Сообщения: 75
Репутация: +  5  -
Профиль   Отправить e-mail  

Реализация итератора

a=Test(1,2)
print(a.__dict__)
for x in a.__dict__:
    print(x)

Еще классная штука:
for x in Test.__dict__:
    print(x)

Отредактировано Paranoia_Agent (Ноя. 26, 2014 21:22:32)

Офлайн

#3 Ноя. 27, 2014 03:22:36

Isem
От:
Зарегистрирован: 2010-08-27
Сообщения: 447
Репутация: +  7  -
Профиль   Отправить e-mail  

Реализация итератора

Добавьте метод:

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

Теперь можно так:
>>> a = Test(5,6)
>>> print( *a )
a b



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version