14. __iter__(self) 和 __next__(self)

以上產生一個迭代物件

(1) 以下是「Score」類別:

class Score:
    def __init__(self, name, *scores):
        '''
        建構元
        設定: 姓名, 不定個數的分數
        '''
        self.name = name
        self.scores = sorted(list(scores))
        self.index = 0

    def __iter__(self):
        return self

    def __next__(self):
        if self.index >= len(self.scores):
            self.index=0
            raise StopIteration
        else:
            d=self.scores[self.index]
            self.index+=1
            return d

(2) 主程式

s = Score('王小明', 90, 80, 60, 40, 70, 30, 80)
for k in s:
    print(k)

執行結果

30
40
60
70
80
80
90