可迭代对象具有一个iter()方法,可迭代对象调用__iter__()方法以后返回一个迭代器对象。也就是说一个迭代器 具有iter 和next方法
以列表为例 a = [1,2,3,4]
a.__iter__() 返回一个迭代器对象
a.__iter__().__next__() 就可以进行迭代
for i in list: 的本质就是一个迭代器,它做的就是首先找到一个迭代器对象,iteration = list.__iter__(),然后 iteration.__next__()进行迭代
一个迭代器的源码:
class MyList(object):
def __init__(self):
self.items = []
def add(self, item):
self.items.append(item)
def __iter__(self):
my_iterator = MyIterator(self.items)
return my_iterator
class MyIterator(object):
def __init__(self, container):
self.i = 0
self.container = container
def __next__(self):
if self.i < len(self.container):
ret = self.container[self.i]
self.i += 1
return ret
else:
raise StopIteration
my_list = MyList() 这个对象就可以就可以进行迭代
my_list.add(100)
my_list.add(200)
for i in my_list:
print i