#练习
#1, 写一个实现迭代器协议的类Primes
#2, 可以生成b开始n个素数
# class Primes:
# def __init__(self, b, n)
# ...
# for x in Primes(10,4):
# print(x) # 11,13,17,19
class MyPrime:
#因为该方法不需要类或者对象调用,所以定义静态方法,没有self参数
#用于判断传入的参数是否是素数
@staticmethod
def __prime(digit):
for x in range(2,digit):
if digit % x == 0:
return False
return True
def __init__(self, b, n):
self.__begin = b
self.__count = n
#可迭代对象
def __iter__(self):
print("__iter__ are called")
self.__cur_pos = self.__begin
self.__cur_count = 0
return self
def __next__(self):
print("__next__ are called")
#如果数量达到,则停止迭代
if self.__cur_count >= self.__count:
raise StopIteration
self.__cur_count += 1
while True:
if self.__prime(self.__cur_pos):
p = self.__cur_pos
self.__cur_pos += 1
return p
self.__cur_pos += 1
for x in MyPrime(10,4):
print(x)