zoukankan      html  css  js  c++  java
  • __next__和__iter__实现迭代器协议

    # __next__和__iter__实现迭代器协议
    class Foo:
        def __init__(self, n):  # 初始化
            self.n = n
    
        def __iter__(self): # 定义类的__iter__方法,实例化时就为一个可迭代对象
            return self
    
        def __next__(self): # 定义类的__next__方法,并在其中设置抛出StopIteration的条件
            self.n += 1
            if self.n > 100:
                raise StopIteration
            return self.n
    
    f1 = Foo(10)
    
    for i in f1:    # 本质上就是iter(f1)==f1.__iter__()
        print(i)
    
    
    # 迭代器协议实现斐波那契数列
    
    class Fib:
        def __init__(self):  # 初始化
    
            self.a = 0
            self.b = 1
    
        def __iter__(self):  # 定义类的__iter__方法,实例化时就为一个可迭代对象
            return self
    
        def __next__(self):  # 定义类的__next__方法,并在其中设置抛出StopIteration的条件
            self.a, self.b = self.b, self.a + self.b
    
            if self.a > 10000:
                raise StopIteration
            return self.a
    
    
    fib = Fib()
    print(next(fib))
    print(next(fib))
    print(next(fib))
    print(next(fib))
    print(next(fib))
    print('----------------------')
    for i in fib:
        print(i)
  • 相关阅读:
    商品翻牌效果(纯css)
    3D旋转相册(纯css)
    3D旋转
    前端搜索js
    js打字的效果
    淡入淡出,类似于轮播图
    返回顶部
    java设计模式--状态模式
    java设计模式--抽象工厂模式
    java设计模式--观察者模式
  • 原文地址:https://www.cnblogs.com/dangrui0725/p/9470997.html
Copyright © 2011-2022 走看看