[python]創建一個可迭代對象

判斷是否可以迭代,看類中是否有__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)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章