第一種:__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)