0. 實現一個可以迭代的對象
1)要想使一個對象實現迭代的功能,須實現__iter__和__next__方法。
2)判斷classmate是否是可以迭代的對象:
from collections import Iterable
isinstance(classmate, Iterable)
結果為True則說明是可以迭代的對象,結果為False則說明不是可迭代的對象。
3)判斷classmate_iterator是否是迭代器:
from collections import Iteratorclassmate_iterator = iter(classmate)
isinstance(classmate_iterator, Iterator)
結果為True則說明是迭代器,結果為False則說明不是迭代器。
4)整體代碼如下:
import time
# from collections import Iterable
# from collections import Iteratorclass Classmate(object):def __init__(self):self.names = list()self.current_num = 0def __iter__(self):"""如果想要一個對象稱為一個 可以迭代的對象,即可以使用for,那么必須實現__iter__方法"""return self # 調用iter(xxobj)的時候 只要__iter__方法返回一個 迭代器即可,至于是自己 還是 別的對象都可以的, 但是要保證是一個迭代器(即實現了 __iter__ __next__方法)def __next__(self):if self.current_num < len(self.names):ret = self.names[self.current_num]self.current_num += 1return retelse:raise StopIterationdef add(self, name):self.names.append(name)classmate = Classmate()
classmate.add("老王")
classmate.add("王二")
classmate.add("張三")# print("判斷classmate是否是可以迭代的對象:", isinstance(classmate, Iterable))
# classmate_iterator = iter(classmate)
# print("判斷classmate_iterator是否是迭代器:", isinstance(classmate_iterator, Iterator))for name in classmate:print(name)time.sleep(1)
運行結果:
老王
王二
張三