Even easier: """ class foo: def __init__(self): self.data = range(10) def __iter__(self): for e in self.data: yield e for i in foo(): print i __iter__ may itself be a generator (I mostly use it exactly in this way). HTH! Heiko.