python利用定義類實現迭代器協議

2021-08-30 13:53:13 字數 716 閱讀 2230

1.具有__ next__和__ iter__方法的物件即被視為迭代器,其中next方法每執行一次返回迭代的下一項,而iter方法可以把物件變成迭代器.

執行for迴圈的本質即是先對物件使用iter方法, 然後不斷使用next方法,直到報出stopiteration. 故可直接在類中定義這兩個方法,從而實現迭代器協議.

下例:

class

test

:def

__init__

(self)

: self.a =

1 self.b =

1 self.c =

0def

__iter__

(self)

:return self

def__next__

(self)

:if self.b >20:

raise stopiteration

if self.c <=1:

self.c +=

1return

1 self.a, self.b = self.b, self.a + self.b

return self.b

t1 = test(

)for i in t1:

print

(i)#result11

2358

1321

Python 實現迭代器

for語句呼叫iter iter 返回 next 方法。返回所有的之後,引發stopiteration異常來終止。於是可以自己寫乙個 iter 函式,返回self,寫乙個 next 方法,每次返回下乙個值,直到結束。class student def init self,name,age self....

Python 反向迭代和實現反向迭代

案例 實現乙個連續的浮點數發生器,floatrange,根據給定範圍 start,end 和步進值,產生一些列的浮點數,例如 floatrange 3,4,0.2 將產生下列序列 正向 3.0 3.2 4.0 反向 4.0 3.8 3.0 如何實現?方法1 列表翻轉 usr bin python3 ...

利用CAsyncSocket類實現Socket程式設計

隨著計算機網路化的深入,計算機網路程式設計在程式設計的過程中變得日益重要。許多文章都曾經介紹過用vc 進行socket程式設計的方法。但由於都是直接利用動態連線庫wsock32.dll進行操作,實現比較繁瑣。其實,vc 的mfc類庫中提供了casyncsocket這樣乙個套接字類,用它來實現sock...