python中,一个类只要实现了__iter__()
方法,则称其为可迭代的,如果其又实现了next()
方法(在python3中为__next__()方法,本文中不再进行说明),则可称其为迭代器。其中,__iter()__
方法的用途是返回一个迭代器,并通过返回的迭代器的next()
来迭代所需的容器。
迭代器的用处,主要是用来遍历一个我们需要的容器,如我们常见的for in循环,通过对于我们自己写的类添加迭代的方法,便可以使得我们的自定义的类可以像内置的列表一样,方便地通过for in来直接遍历。
以下是一个比较简单的迭代器的使用方法。
首先,假设我们有一个类MyArray
,其中有一个字符串的列表self.elements
class MyArray(object):
def __init__(self):
self.elements = ["e1", "e2", "e3"]
self.len = len(self.elements)
这时,我们知道,我们是无法直接遍历MyArray
的,只能通过访问其中的元素来实现。这时,我们可以通过一种简单的方法来使得MyArray
变成一个可迭代的类。
class MyArray(object):
def __init__(self):
self.elements = ["e1", "e2", "e3"]
self.len = len(self.elements)
self.pos = 0
def __iter__(self):
# 因为自身也为一个迭代器,因此直接返回自身即可
return self
def next(self):
# StopIteration是以抛出异常的方式说明已经遍历完目标容器
if self