python對象的for迭代實現

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

利用__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__方法一樣能夠實現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)
相關文章
相關標籤/搜索