如果一个类中定义了方法__iter__(),则表明该类的实例为一个可迭代iterable的对象;
如果类中再定义了__next__()函数,则可以利用for循环自动调用__next__()函数;
class A:
def __init__(self,end):
self.end = end
self.start = 0
def __iter__(self):
return self
def __next__(self):
if self.start<self.end:
ret = self.start
self.start+=1
return ret
else:
raise StopIteration
a = A(5)
for i in a:
print(i)
from collections import Iterable,Iterator
print(isinstance(a,Iterator))
print(isinstance(a,Iterable))
输出:
0
1
2
3
4
True
True
注:当然还可以采用next()函数取值
例如:
print(next(a))
print(next(a))
print(next(a))
print(next(a))
print(next(a))