In this tutorial, we are going to see how to create an Iterable class in Python.

Python Iterable Class:

An iterator is an object that can be iterated through all the values in the object. In python Lists, tuples, dictionaries, and sets are all iterable objects, these are all can be iterate over the values.

The iter() is a method used to get the iterator from List, tuple, dictionary and set objects, through which the items are get iterated.

How to create Python Iterable class?

By default, all python classes are not iterable so that we can not traverse/iterate the values of the python class.  To make a class as iterable, you have to implement the __iter__() and __next__() methods in that class.

The __iter__() method allows us to make operations on the items or initializing the items and returns an iterator object.

The __next__() method allows us to do operations and it should return the next value of the sequence.

Iterable class in Python Example:

To make the example as simple, I am taking a simple use-case – Creating a class that allows iterating over a range of provided dates, and it always produces one day at a time on every loop.

from datetime import timedelta, date

class DateIterable:

    def __init__(self, start_date, end_date):
        # initilizing the start and end dates
        self.start_date = start_date
        self.end_date = end_date
        self._present_day = start_date

    def __iter__(self):
        #returning __iter__ object
        return self

    def __next__(self):
        #comparing present_day with end_date,
        #if present_day greater then end_date stoping the iteration
        if self._present_day >= self.end_date:
            raise StopIteration
        today = self._present_day
        self._present_day += timedelta(days=1)
        return today


if __name__ == '__main__':
    for day in DateIterable(date(2020, 1, 1), date(2020, 1, 6)):
        print(day)

Output:

2020-01-01
2020-01-02
2020-01-03
2020-01-04
2020-01-05

The above example iterates the days between the start and end days. The for loop creates an iterator object and executes the next() method for each loop, that’s why we see them each day in a separate line.

Note: StopItertion is used to prevent the iteration, usually, we prevent the iteration on a specific condition.

Reference: