Python魔法方法之__iter__

  • 定义 __iter__方法后

  • 下面的例子简单实现一个 range(n)

from numpy import iterable

class MyList:
    def __init__(self, len: int):
        self.cursor = -1
        self.length = len

    def __iter__(self):
        return self

    def __next__(self):
        if self.cursor+1 < self.length:
            self.cursor += 1
            return self.cursor
        else:
            exit(1)

    def __repr__(self) -> str:
        return f"MyList({self.length})"

x = MyList(10)
print(iterable(x))
for i in x:
    print(i)

输出为:

True
0
1
2
3
4
5
6
7
8
9

使用 next()一步一步迭代可以看的更清楚:

from numpy import iterable

class MyList:
    def __init__(self, len: int):
        self.cursor = -1
        self.length = len

    def __iter__(self):
        return self

    def __next__(self):
        if self.cursor+1 < self.length:
            self.cursor += 1
            return self.cursor
        else:
            exit(1)

    def __repr__(self) -> str:
        return f"MyList({self.length})"

x = MyList(10)
print(iter(x))
print(next(x))
print(next(x))
print(next(x))
print(next(x))
for i in x:
    print(i)

输出结果为:

MyList(10)
0
1
2
3
4
5
6
7
8
9

Original: https://blog.csdn.net/qq_51352578/article/details/125507312
Author: 红烧code
Title: Python魔法方法之__iter__

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/757452/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球