Python中如何使用__iter__()函數定義物件的可迭代性
在Python中,可迭代物件是指能夠透過迭代器進行遍歷的對象。一個物件要成為可迭代對象,其類別必須實作__iter__()函數。這個函數傳回一個實作了__next__()方法的迭代器物件。
__iter__()函數的基本格式如下:
def __iter__(self): # 返回一个迭代器对象 return self
下面透過一個範例來示範如何使用__iter__()函數來定義物件的可迭代性。
class FibonacciSequence: def __init__(self, n): self.n = n self.a, self.b = 0, 1 self.count = 0 def __iter__(self): # 返回一个迭代器对象 return self def __next__(self): if self.count < self.n: self.a, self.b = self.b, self.a + self.b self.count += 1 return self.a else: raise StopIteration n = int(input("请输入斐波那契数列的长度:")) fib = FibonacciSequence(n) print("斐波那契数列前", n, "个数字为:") for num in fib: print(num)
在上面的例子中,我們定義了一個名為FibonacciSequence的類,用於產生斐波那契數列。在類別的初始化方法__init__()中,我們傳入參數n表示要產生的斐波那契數列的長度。 __iter__()函數傳回了一個迭代器物件self,而實作了__next__()方法的迭代器物件可以使用for迴圈進行遍歷。
在__next__()方法中,我們使用self.count來記錄目前已經產生的斐波那契數列的長度(即已經傳回的數的個數),當self.count小於n時,我們根據斐波那契數列的規則產生下一個數字,並將self.b賦值給self.a,將self.a與self.b之和賦值給self.b,同時self.count加1。當self.count等於n時,我們會拋出StopIteration異常,這是迭代器的結束標誌。
最後,在主程式中,我們透過輸入n的值實例化了一個FibonacciSequence物件fib,並將其傳入for迴圈中進行遍歷,並逐一列印出斐波那契數列的前n個數字。
透過上面的例子,我們可以看到如何使用__iter__()函數來定義物件的可迭代性。只要一個物件實作了__iter__()函數並傳回一個實作了__next__()方法的迭代器對象,就可以使用for迴圈等方式來迭代遍歷它。這種方式使得我們可以自訂的物件也能像Python內建的清單、字典等物件一樣進行遍歷操作。
以上是Python中如何使用__iter__()函數定義物件的可迭代性的詳細內容。更多資訊請關注PHP中文網其他相關文章!