pylint-errors

E1133 (not-an-iterable)

:x: Problematic code:

class Foo:
    def __init__(self, end, start=0):
        self.n = start
        self.end = end


for i in Foo(10, start=1):
    print(i)

:heavy_check_mark: Correct code:

class Foo:
    def __init__(self, end, start=0):
        self.n = start
        self.end = end

    def __iter__(self):
        return self

    def __next__(self):
        if self.n <= self.end:
            n = self.n
            self.n += 1
            return n

        raise StopIteration


for i in Foo(10, start=1):
    print(i)

Rationale:

Used when a non-iterable value is used in place where iterable is expected