第一种:__iter__spa
实现__iter__的对象,是可迭代对象。__iter__方法能够直接封装一个迭代器,从而实现for循环code
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__方法,注意__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 # 必定有终止
for statement的另外一个机制是角标索引,因此利用__getitems__方法一样能够实现blog
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)