Python สร้าง Iterator
สร้างตัววนซ้ำ
ในการสร้างอ็อบเจ็กต์/คลาสเป็นตัววนซ้ำ คุณต้องใช้เมธอด
__iter__()
และ
__next__()
อ็อบเจ็กต์ของคุณ
ดังที่คุณได้เรียนรู้ในบทPython Classes/Objectsทุกคลาสมีฟังก์ชันที่เรียกว่า
__init__()
ซึ่งทำให้คุณสามารถเริ่มต้นบางอย่างเมื่อวัตถุถูกสร้างขึ้น
วิธี การ__iter__()
นี้ทำหน้าที่คล้ายกัน คุณสามารถดำเนินการได้ (กำลังเริ่มต้น ฯลฯ) แต่ต้องส่งคืนอ็อบเจ็กต์ iterator เองเสมอ
วิธี__next__()
นี้ยังช่วยให้คุณดำเนินการได้ และต้องส่งคืนรายการถัดไปตามลำดับ
ตัวอย่าง
สร้างตัววนซ้ำที่ส่งกลับตัวเลข เริ่มต้นด้วย 1 และแต่ละลำดับจะเพิ่มขึ้นทีละหนึ่ง (ส่งกลับ 1,2,3,4,5 เป็นต้น):
class MyNumbers:
def __iter__(self):
self.a =
1
return self
def __next__(self):
x = self.a
self.a += 1
return x
myclass = MyNumbers()
myiter = iter(myclass)
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))