Skip to content

迭代器协议:iter__和__next ​

python
class Counter:
    def __init__(self, max):
        self.max = max
        self.n = 0
    
    def __iter__(self):
        return self
    
    def __next__(self):
        if self.n < self.max:
            self.n += 1
            return self.n
        raise StopIteration

for i in Counter(5):
    print(i)  # 1, 2, 3, 4, 5

iter()和next() ​

python
lst = [1, 2, 3]
it = iter(lst)
print(next(it))  # 1
print(next(it))  # 2

练习:答案

用心记录每一步成长