若是我們要定義具有迭代器特性的類別 (class) ,我們需要加入 __iter__() 與 __next__() 的定義, __iter__() 回傳 self 本身,而 __next__() 為取得下一個元素的方法 (method) 。
例如以下程式,類別 (class) Fibs 可計算費博納西數列 (Fibonacci series)
class Fibs:
def __init__(self):
self.i = 0
self.j = 1
def __str__(self):
return str(self.i)
def __iter__(self):
return self
def __next__(self):
self.i, self.j = self.j, self.i + self.j
return self.i
fibs = Fibs()
for f in fibs:
print(f)
if f > 10000:
break
# 《程式語言教學誌》的範例程式
# http://pydoing.blogspot.com/
# 檔名:iterator.py
# 功能:示範 Python 程式
# 作者:張凱慶
# 時間:西元 2010 年 12 月 執行結果如下

__iter__() 就是回傳 self 本身
def __iter__(self):
return self__next__() 取得下一個元素,此例中就是前兩個數字相加
def __next__(self):
self.i, self.j = self.j, self.i + self.j
return self.iFibs 提供的是費伯納西數的迭代計算模式,因此可以很快的計算出費伯納西數列。
| 中英文術語對照 | |
|---|---|
| 容器 | container |
| 物件 | object |
| 元素 | element |
| 複合資料型態 | compound data type |
| 迭代器 | iterator |
| 類別 | class |
| 費博納西數列 | Fibonacci series |
| 方法 | method |
| 類別 | class |
沒有留言:
張貼留言