Iterator ใน Python มีเมธอดสองตัวสำคัญ:
__iter__()
คืน iterator object ถ้าคลาสรองรับการวนซ้ำหลายแบบ อาจมีเมธอดอื่นเพิ่ม
__next__()
คืนอิลิเมนต์ถัดไป เมื่อหมดจะ raise StopIteration
ตัวอย่าง: Custom Iterator คำนวณ x^x
class PowerIter:
def __init__(self, max=0):
self.max = max
def __iter__(self):
self.term = 0
return self
def __next__(self):
if self.term <= self.max:
element = self.term ** self.term
self.term += 1
return element
else:
raise StopIteration
powIterObj = PowerIter(10)
powIter = iter(powIterObj)
for i in range(10):
print(next(powIter))
ผลลัพธ์
1 1 4 27 256 3125 46656 823543 16777216 387420489