手寫一個python迭代器過程詳解
阿新 • • 發佈:2020-01-09
分析
- 我們都知道一個可迭代物件可以通過iter()可以返回一個迭代器。
- 如果想要一個物件稱為可迭代物件,即可以使用for,那麼必須實現__iter __()方法。
- 在一個類的例項物件想要變成迭代器,就必須實現__iter__()和__next__()方法。
- 呼叫iter()時,在物件內部預設呼叫__iter__(),即__iter__()的返回值應該是一個迭代器。
- for的每次迴圈中或者next()時,都是自動呼叫迭代器的__next__()方法,並有一個返回值。
實現
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) """ 張三 李四 王五 """
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。