手寫一個python迭代器過程詳解
更新時間:2019年08月27日 11:18:20 作者:三國小夢
這篇文章主要介紹了手寫一個python迭代器過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
分析
- 我們都知道一個可迭代對象可以通過iter()可以返回一個迭代器。
- 如果想要一個對象稱為可迭代對象,即可以使用for,那么必須實現(xiàn)__iter __()方法。
- 在一個類的實例對象想要變成迭代器,就必須實現(xiàn)__iter__()和__next__()方法。
- 調(diào)用iter()時,在對象內(nèi)部默認調(diào)用__iter__(),即__iter__()的返回值應(yīng)該是一個迭代器。
- for的每次循環(huán)中或者next()時,都是自動調(diào)用迭代器的__next__()方法,并有一個返回值。
實現(xiàn)
class Classmate:
def __init__(self):
self.names = []
self.num = 0
def add(self, name):
self.names.append(name)
def __iter__(self):
return self
def __next__(self):
if self.num < len(self.names):
ret = self.names[self.num]
self.num += 1
return ret
else:
raise StopIteration
c = Classmate()
c.add("張三")
c.add("李四")
c.add("王五")
for i in c:
print(i)
"""
張三
李四
王五
"""
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
淺析Python中壓縮zipfile與解壓縮tarfile模塊的使用
Python?提供了兩個標準庫模塊來處理文件的壓縮和解壓縮操作:zipfile和tarfile,本文將分享?這兩個模塊的使用方法,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-10-10
pandas 使用apply同時處理兩列數(shù)據(jù)的方法
下面小編就為大家分享一篇pandas 使用apply同時處理兩列數(shù)據(jù)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-04-04
python如何用columns參數(shù)獲取DataFrame各列的表頭名
這篇文章主要介紹了python如何用columns參數(shù)獲取DataFrame各列的表頭名問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-03-03
Python機器學(xué)習(xí)之實現(xiàn)模糊照片人臉恢復(fù)清晰
GFPGAN是騰訊開源的人臉修復(fù)算法,它利用預(yù)先訓(xùn)練好的面部?GAN(如?StyleGAN2)中封裝的豐富和多樣的先驗因素進行盲臉?(blind?face)修復(fù)。這篇文章主要為大家介紹通過GFPGAN實現(xiàn)模糊照片人臉恢復(fù)清晰,需要的朋友可以參考一下2021-12-12

