8.3 python中的迭代器(iterator)
(1)类中同时出现__iter__()和__next__()方法,类的实例化才是迭代器
迭代器是支持__iter__()和__next__()方法的对象。
前面我们讲到可以通过函数iter把对象转换为迭代器,也可以手动定义一个迭代器(iterator)。一个类如果具有__iter__()和__next__()方法,则这个类的实例化的类对象地址object是一个迭代器。注意,必须要具有这两个方法,若一个类有__iter__()方法,而没有__next__()方法,这个类实例化后的对象object不是一个迭代器,只能是一个可迭代对象,若object是聚集(collection、集合)特点的可迭代对象,则可以用iter(object)转换为迭代器,否则不能转换。
__iter__()和__next__()方法的功能作用上面已经描述,这里不再重复,定义的迭代器中应该有停止条件,避免循环无限下去。迭代器可以用iter和next手动迭代取值,也可以用for循环遍历迭代器。下面是一个简单的迭代器例子,可以看出方法 __iter__() 和 __next__()的用法,具体注意事项参见程序中的注释。