Я только что узнал об итераторах на Python, однако мне сложно их реализовать.Использование итератора в python?
Я пытаюсь написать класс, так что этот цикл работ:
odds = OddNumbers(13)
for i in odds:
print(i)
Я хочу написать функцию ИТЭР() и следующую функцию(), чтобы сделать это.
До сих пор у меня есть:
class OddNumbers:
def __init__(self, number):
self.number = number
def __iter__(self):
return self
def __next__(self):
current = self.number
if self.number%2 == 0:
return current
else:
raise StopIteration
Но на данный момент это не возвращается ничего. Я ожидаю, что выход будет
1
3
5
7
9
11
13
Помощь?
Что вы пытаетесь сделать? У вас есть только один элемент. Зачем вам этот класс быть итерируемым? – thefourtheye
Какие числа должен печатать пример кода? – user2357112
Если вы начинаете с нечетного числа, то '__next__' будет только' raise StopIteration'. Если вы начнете с четного числа, оно вернет только это число. Возможно, вы имели в виду '__next__', чтобы уменьшить' self.number' каждый раз? –