1. 程式人生 > 程式設計 >手寫一個python迭代器過程詳解

手寫一個python迭代器過程詳解

分析

  • 我們都知道一個可迭代物件可以通過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)
"""
張三
李四
王五
"""

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。