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)
相关文章
相关标签/搜索