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__())
