判斷是否可以迭代,看類中是否有__iter__方法
__iter__方法會自動調用__next__方法,返回下一個對象
from collections import Iterable
# 判斷一個類是否可迭代,看有沒__iter__方法
class Classmates(object):
def __init__(self):
self.names = list()
self.current_num = 0
def add(self, name):
self.names.append(name)
# 讓對象變得可迭代,即可以使用for,那麼必須實現__iter__方法
def __iter__(self):
return self
def __next__(self):
if self.current_num < len(self.names):
ret = self.names[self.current_num]
self.current_num += 1
return ret
else:
raise StopIteration # 通過拋出這個異常,讓循環結束
classmate = Classmates()
classmate.add('張三')
classmate.add('王五')
classmate.add('李四')
# 創建一個迭代器
classmate_iterator = iter(classmate)
for name in classmate:
print(name)