可迭代對象(__iter__()和__next__())

若是一個類想被用於for ... in循環,相似list或tuple那樣,就必須實現一個__iter__()和__next__()方法,該方法返回一個迭代對象
而後,Python的for循環就會不斷調用該迭代對象的__next__()方法拿到循環的下一個值,直到遇到StopIteration錯誤時退出循環spa

 

    class Fib(object):
        def __init__(self):
            self.a, self.b = 0, 1 # 初始化兩個計數器a,b

        def __iter__(self):
            return self # 實例自己就是迭代對象,故返回本身

        def __next__(self):
            self.a, self.b = self.b, self.a + self.b # 計算下一個值
            if self.a > 100000: # 退出循環的條件
                raise StopIteration()
            return self.a # 返回下一個值
            
    for n in Fib():
        print(n)
    
  #輸出:1 #輸出:1 #輸出:2 #輸出:3 #輸出:5 #輸出:... #輸出:46368 #輸出:75025
相關文章
相關標籤/搜索