суббота, 26 апреля 2014 г.

Итераторы

Чтобы получить объект-итератор, нужно создать объект, который будет иметь два метода со специальными именами:

__iter__() - метод, который возвращает сам объект.
next() - метод, который возвращает следующее значение итератора.


 class SimpleIterator(object):
     
     def __init__(self,fname):
         self.fd = open(fname,'r')
         
     def __iter__(self):
         return self

     def next(self):
         l = self.fd.readline()
         if l != '':
             l = l.rstrip('\n')
             num = int(l)
             return num*2
         raise StopIteration

Проверка:

>>> simple_iter = SimpleIterator('test_data.txt')
>>> for i in simple_iter:
...    print i
6
8

Комментариев нет:

Отправить комментарий