Listing 3. Creating an Iterator Object Using Our Class

#!/usr/bin/env python

class AnyIter:  # any number of items iterator
    def __init__(self, data, safe=0):
        self.safe = safe        # play it safe
        self.iter = iter(data)  # our iterator

    def __iter__(self):         # class iterator
        return self

    def next(self, howmany=1):  # special next()
        retval = []
        for eachItem in range(howmany):
            try:
                retval.append(self.iter.next())
            except StopIteration:
                # reraise if asking for too
                # many items
                if self.safe == 0:
                    raise
                # "safe" mode: return less than
                # requested
                else:
                    break
        return retval