class Squares:
    def __init__(self, start, stop):    # Zapisanie stanu przy utworzeniu
        self.value = start - 1
        self.stop  = stop

    def __iter__(self):                 # Uzyskanie obiektu iteratora
        return self                     # Wywoływany również przez wbudowaną funkcję iter()

    def __next__(self):                 # Zwrócenie kwadratu z każdą iteracją
        if self.value == self.stop:     # Również wywoływane przez funkcję wbudowaną next
            raise StopIteration
        self.value += 1
        return self.value ** 2

