第一种:__iter__
实现__iter__的对象,是可迭代对象。__iter__方法可以直接封装一个迭代器,从而实现for循环
class A: def __init__(self): self.lis = [1,2,3,4] def __iter__(self): for i in self.lis: yield i a = A() for i in a: print(i)
第二种:__iter__ 和 __next__
利用__iter__返回自己,会进一步调用__next__方法,注意__next__方法要有raise StopIteration 的终止条件
class B: def __init__(self): self.lis = [1,2,3,4] self.c = -1 def __iter__(self): return self def __next__(self): if self.c < self.lis.__len__()-1: self.c+=1 return self.lis[self.c] else: raise StopIteration # 一定有终止
第三种:__getitems__
for statement的另一个机制是角标索引,所以利用__getitems__方法同样可以实现
class C: def __init__(self): self.a = [1,2,3,4] def __getitem__(self, item): return self.a[item] c = C() for i in c: print(i)