迭代是访问集合元素的一种方式,迭代器是可以迭代的对象,它可以记住遍历的位置。
迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。
必须实现的两个方法:__iter__()
、__next__()
文件 MyClass.py :
#! encoding=utf-8
class MyClass:
def __init__(self):
self.a = [ [i] for i in range(20) ]
self.count = 0
def __iter__(self):
"""
__iter__()方法返回一个特殊的迭代器对象,
这个迭代器对象实现了__next__() 方法,
并通过 StopIteration 异常标识迭代的完成.
"""
return self
def __next__(self):
"""
__next__()返回的是下一个迭代器对象
"""
if self.count < 20:
ret = self.a[self.count]
self.count += 1
return ret
else:
# StopIteration 异常用于标识迭代的完成
# 防止出现无限循环的情况
raise StopIteration
def getIter():
myclass = MyClass()
myiter = iter(myclass)
return myiter
if __name__ == "__main__":
itr = getIter()
for i in itr:
print(i)
- 调用测试:
$ python MyClass.py
[0]
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]
[10]
[11]
[12]
[13]
[14]
[15]
[16]
[17]
[18]
[19]