Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 15, 2011 14:38:13

Dmitry Smal
От:
Зарегистрирован: 2011-08-15
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Использовать класс как итератор

Всем привет!

Пытаюсь решить python - quiz (http://pyobject.ru/blog/2010/02/04/python-quiz/)

4ое задание на Классы предполагает, что нужно использовать класс как итератор.

Но у возникает ошибка: TypeError: ‘type’ object is not iterable

Вот код

class Reg(object):
inst = []
def __init__(self):
Reg.inst.append(self)
def __iter__(self):
for i in inst:
yield i

r1 = Reg()
r2 = Reg()

for r in Reg:
print(r)
декораторы @classmethod и @staticmethod не спасают. С old-style классами аналогично.

Подскажите можно ли как - то использовать сам класс как итератор ?



Офлайн

#2 Авг. 15, 2011 15:04:13

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Использовать класс как итератор

Так ведь это на самом деле задание на метаклассы. Итератор тоже должен быть в этом самом метаклассе.



Офлайн

#3 Авг. 15, 2011 15:33:11

Dmitry Smal
От:
Зарегистрирован: 2011-08-15
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Использовать класс как итератор

Андрей Светлов
Так ведь это на самом деле задание на метаклассы. Итератор тоже должен быть в этом самом метаклассе.
Оо.. спасибо! буду разбираться



Офлайн

#4 Авг. 15, 2011 15:45:19

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

Использовать класс как итератор

И у итератора должен быть реализован метод __next__, выбрасывающий исключение StopIteraion после исчерпания элементов.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version