迭代器协议:

迭代器协议,是指对象(实例)能够使用next函数获取下一项数据,在没有下一项数据之前触发一个StopIteration异常来终止迭代


next(it) 对应__next__(self)方法

iter(obj) 对应__iter__(self)方法,通常返回一个可迭代对象



class odd:

def __init__(self,begin,end):

self.beg = begin

self.end = end

self.cur = begin #数据的当前位置

def __next__(self):

"""print("next被调用")"""

if self.cur >= self.end:

raise StopIteration

#此判断获取一个奇数,

if self.cur % 2 == 0:

self.cur += 1


r = self.cur

self.cur += 1 #步长

return r

def __iter__(self):

"""__iter__被调用,返回自己作为迭代器,每次返回一个可迭代对象,调用一次__iter__"""

self.cur = self.beg

return self


o = odd(5,10)

for x in o:

print(x)


print([x for x in o])