List列表
Python中如:List、Set、dict等容器都支持元素遍历操作,这些遍历操作中都会采用for x in list类似访问形式。这些访问形式的实现就采用了迭代器,实现迭代器可以显示使用yield关键字产生,也可以采用类重载默认方法__iter__函数的形式来实现,如未实现该方法则判断是否重载__getitem__方法。
__iter__与__next__
Iterable接口有一个派生类:Iterator迭代器,前者只有一个方法__iter__,后者则多了一个方法__next__,Iterator类用于实现迭代器模式或也可直接重载__iter__方法。
class Sentence:
def __init__(self, text):
self.text = text
def __getitem__(self, index):
return self.text[index]
def __len__(self):
return len(self.text)
def __repr__(self):
return 'Sentence(%s)' % reprlib.repr(self.text)
def __iter__(self):
"""
print("__iter__")
for word in self.text:
yield word
"""
return SentenceIterator(self.text)
class