手寫一個python迭代器過程詳解
更新時間:2019年08月27日 11:18:20 作者:三國小夢
這篇文章主要介紹了手寫一個python迭代器過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
分析
- 我們都知道一個可迭代對象可以通過iter()可以返回一個迭代器。
- 如果想要一個對象稱為可迭代對象,即可以使用for,那么必須實現(xiàn)__iter __()方法。
- 在一個類的實例對象想要變成迭代器,就必須實現(xiàn)__iter__()和__next__()方法。
- 調用iter()時,在對象內部默認調用__iter__(),即__iter__()的返回值應該是一個迭代器。
- for的每次循環(huán)中或者next()時,都是自動調用迭代器的__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) """ 張三 李四 王五 """
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Python Print實現(xiàn)在輸出中插入變量的例子
今天小編就為大家分享一篇Python Print實現(xiàn)在輸出中插入變量的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12關于Python中的向量相加和numpy中的向量相加效率對比
今天小編就為大家分享一篇關于Python中的向量相加和numpy中的向量相加效率對比,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08python循環(huán)定時中斷執(zhí)行某一段程序的實例
今天小編就為大家分享一篇python循環(huán)定時中斷執(zhí)行某一段程序的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-06-06Python數(shù)據(jù)類型之Number數(shù)字操作實例詳解
這篇文章主要介紹了Python數(shù)據(jù)類型之Number數(shù)字操作,結合實例形式詳細分析了Python數(shù)字類型的概念、功能、分類及常用數(shù)學函數(shù)相關使用技巧,需要的朋友可以參考下2019-05-05講解Python中for循環(huán)下的索引變量的作用域
這篇文章主要介紹了講解Python中for循環(huán)下的索引變量的作用域,是Python學習當中的基礎知識,本文給出了Python3的示例幫助讀者理解,需要的朋友可以參考下2015-04-04pandas中.loc和.iloc以及.at和.iat的區(qū)別說明
這篇文章主要介紹了pandas中.loc和.iloc以及.at和.iat的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-04-04