Задать вопрос
@RUSTIK1023

Как сделать цикл for, берущий значения из класса, в python?

Есть следующий класс:
class MyClass():
    def __init__(self, name, *colors):
        self.name=name
        self.colors=colors
    def __repr__():
        return 'NAME: '+self.name
        #не подходит для item 

example=MyClass('Petya','red','green','white')
for item in example: #item должно принимать, скажем, все элементы self.colors по очереди
    print(item)

Необходимо, чтобы item принимал все элементы self.colors по очереди. Но __repr__() example'а уже занят, чтобы превратить его в список colors. Причём перебирать нужно обязательно example, не colors
  • Вопрос задан
  • 151 просмотр
Подписаться Простой Комментировать
Пригласить эксперта
Ответы на вопрос 3
Wispik
@Wispik
class MyClass():
    def __init__(self, name, *colors):
        self.name=name
        self.colors=colors
    def __iter__(self):
        for x in self.colors:
            yield x

example=MyClass('Petya','red','green','white')
for item in example:
    print(item)
Ответ написан
Комментировать
@LanskoyGames
У модераторов первое место, но только с конца...
for item in example.colors: #работает
    print(item)

Вот, или нужно было что-то другое?
Ответ написан
Комментировать
0xD34F
@0xD34F
__iter__, iter:

def __iter__(self):
  return iter(self.colors)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы