Oct-19-2020, 01:30 PM
I have created a Class and used generator in a method which is supposed to yield even numbers between start and stop range. When trying to use next() of yield from the Class Obj, it is printing the same number. Is this not the right way to access?
# Creating Class Evem class Even: # Constructor def __init__(self, start, stop, reverse=False): self.start = start self.stop = stop self.reverse = reverse # self.nums = [] # Creating filter method using yeild/Generator def filter_even(self): for i in range(self.start, self.stop + 1): if i % 2 == 0: yield i # Creating an Obj of class Even even_nums = Even(10, 50, False) # Making sure what's in the obj I have created print(even_nums.__dict__) # {'start': 10, 'stop': 50, 'reverse': False} # Trying to print the yield result one by one print(even_nums.filter_even().__next__()) print(even_nums.filter_even().__next__()) print(even_nums.filter_even().__next__()) print(even_nums.filter_even().__next__()) # Q: Why is printing the same element?? # 10 # 10 # 10 # 10Am I not calling it the right way?
print(even_nums.filter_even().__next__())