__iter__
and __next__
methods can be used to create an iterator. #!/usr/bin/python3 class Fibonacci(): def __init__(self, howMany): self.counter = howMany self.curFib = 0 self.nextFib = 1 def __iter__(self): # # Return an object that exposes an __next__ method. # self (whose type is Fibonacci) is such an object: # return self def __next__(self): if self.counter == 0: # # We have returned the count of fibonacci numbers # asked for… stop the iteration: # raise StopIteration self.counter -= 1 nextFib = self.curFib + self.nextFib self.curFib = self.nextFib self.nextFib = nextFib return self.curFib # # We want 10 fibonacci numbers: # fib_10 = Fibonacci(10) # # Print the 10 fibonacci numbers: # for fib in fib_10: print(fib)