Как правильно определить метод итератора __next__? - PullRequest
0 голосов
/ 15 сентября 2018

Ниже приведен итератор, который задает начальные и конечные значения и возвращает целые числа, увеличивающиеся на единицу:

class Iterator:

    def __init__(self, start, stop):
        self.start = start
        self.stop = stop
        self._start = self.start

    def __iter__(self):
        return self

    def __next__(self):
        self.current = self._start    
        if self.current >= self.stop:
            raise StopIteration
        self._start += 1
        return self.current

Я вижу вышеупомянутую версию, используемую всеми. Не будет ли следующая версия более читабельной? Также избегает использования условного выражения if, если это хорошо.

    def __next__(self):
        self.current = self._start
        while self.current < self.stop:
            self._start += 1
            return self.current
        raise StopIteration
...