from UserList import UserList class ListIter: def __init__(self, data): print "Creating iterator" self.data = data self.index = 0 def next(self): try: value = self.data[self.index] self.index += 1 print "Item %s: %s" % (self.index, value) return value except IndexError: print "Done!" raise StopIteration def __iter__(self): print "Returning self" return self class IterableUserList(UserList): def __iter__(self): return ListIter(self.data) L = IterableUserList(['a','b','c']) iterable = iter(L) print "Now starting loop" for i in iterable: pass