In python there is iteration concepts over containers. Iterators have two distinct functions. Using these functions, we can use user defined classes to support iteration. These functions are __iter__() and the __next__().
Method __iter__()
The __iter__() method returns iterator object. If one class supports different types of iteration, then some other methods can be there to do some other tasks.
Method __next__()
The __next__() method returns the next element from the container. When the item is finished, it will raise the StopIteration exception.
Example Code
class PowerIter:
#It will return x ^ x where x is in range 1 to max
def __init__(self, max = 0):
self.max = max #Set the max limit of the iterator
def __iter__(self):
self.term = 0
return self
def __next__(self):
if self.term <= self.max:
element = self.term ** self.term
self.term += 1
return element
else:
raise StopIteration #When it exceeds the max, return exception
powIterObj = PowerIter(10)
powIter = iter(powIterObj)
for i in range(10):
print(next(powIter))
Output
1 1 4 27 256 3125 46656 823543 16777216 387420489