class AnyIter(object):
def __init__(self, data, safe=False):
self.safe = safe
self.iter = iter(data)
def __iter__(self):
return self
def next(self, howmany=1):
retval = []
for eachItem in range(howmany):
try:
retval.append(self.iter.next())
except StopIteration:
if self.safe:
break
else:
raise
return retval
In [91]: a = AnyIter(range(10), True)
In [92]:
In [92]: a
Out[92]: <__main__.AnyIter at 0x174a6b0>
In [93]: print a
<__main__.AnyIter object at 0x0174A6B0>
In [94]: i = iter(a)
In [95]: i
Out[95]: <__main__.AnyIter at 0x174a6b0>
In [96]: print i
<__main__.AnyIter object at 0x0174A6B0>
In [97]: i.next(14)
Out[97]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]