迭代器

class ClassMate(object):
    def __init__(self):
        self.names = list()
        self.index = 0

    def add(self,name):
        self.names.append(name)

    def __iter__(self):
        return self

    def __next__(self):
        if self.index < len(self.names):
            ret = self.names[self.index]
            self.index += 1
            return ret
        else:
            raise StopIteration

class_mate = ClassMate()
class_mate.add('张三')
class_mate.add('李四')
class_mate.add('王五')

for name in class_mate:
    print(name)

 

from collections import Iterable
from collections import Iterator

class ClassMate(object):

    def __init__(self):
        self.names = list()

    def add(self,name):
        self.names.append(name)

    def __iter__(self):
        return ClassIterator(self)

class ClassIterator(object):
    def __init__(self,obj):
        self.obj = obj
        self.index = 0
    def __iter__(self):
        pass
    def __next__(self):
        if self.index < len(self.obj.names):
            ret = self.obj.names[self.index]
            self.index += 1
            return ret
        else:
            raise StopIteration



class_mate = ClassMate()
class_mate.add('张三')
class_mate.add("李四")
class_mate.add('王五')

for name in class_mate:
    print(name)

 

class Fibonacci(object):
    def __init__(self,num):
        self.num = num
        self.index = 0
        self.a = 0
        self.b = 1

    def __iter__(self):
        return self

    def __next__(self):
        if self.index < self.num:
            ret = self.a
            self.a,self.b = self.b,self.a+self.b
            self.index += 1
            return ret
        else:
            raise StopIteration

fib = Fibonacci(10)
for num in fib:
    print(num)

 

posted @ 2018-09-13 15:29  Woowo  阅读(114)  评论(0编辑  收藏  举报