Я пытаюсь понять Iterability в Python.
Как я понимаю, __iter__() должен возвращать объект, у которого есть метод next(), который должен возвращать значение или поднять исключение StopIteration. Таким образом, я написал этот класс, который удовлетворяет обоим этим условиям.
Но это не работает. Что не так?
class Iterator:
    def __init__(self):
        self.i = 1
    def __iter__(self):
        return self
    def next(self):
        if self.i < 5:
            return self.i
        else:
            raise StopIteration
if __name__ == __main__:
    ai = Iterator()
    b  = [i for i in ai]
    print b
