Ваш текущий код работает. Вместо этого я покажу вам еще несколько итераторов / генераторов.
самое простое встроенное с точно вашим поведением.
Iterator2 = xrange(2,5)
Прямой перевод вашего класса на генератор
def Iterator3():
i = 1
while i < 5:
i += 1
yield i
генератор, составленный из генераторов в стандартной библиотеке python
import itertools
Iterator4 = itertools.takewhile(
lambda y : y < 5,
itertools.count(2) )
простое выражение генератора (не очень захватывающее ...)
Iterator5 = ( x for x in [2, 3, 4] )