小编HER*_*ERO的帖子

以不同的方式实现`__iter__()`和`__next__()`

我正在读一本关于 Python 的书,其中说明了如何实现迭代器协议。

class Fibbs:
    def __init__(self):
        self.a = 0
        self.b = 1
    def __next__(self):
        self.a, self.b = self.b, self.a + self.b
        return self.a
    def __iter__(self):
        return self
Run Code Online (Sandbox Code Playgroud)

在这里,self它本身就是可迭代和迭代器,我相信?然而,下面的段落说:

请注意,迭代器实现了该__iter__方法,实际上该方法将返回迭代器本身。在许多情况下,您可以将该__iter__方法放入另一个对象中,并在 for 循环中使用该对象。然后将返回你的迭代器。建议迭代器__iter__另外实现自己的方法(返回 self,就像我在这里所做的那样),这样它们本身就可以直接在 for 循环中使用。

这是否意味着您可以将__iter__()和放入__next__()两个不同的对象中?可以对属于不同类的对象执行此操作吗?只能对属于不同类的对象执行此操作吗?这可能是实现迭代器协议的有点奇怪的方式。但我只是想看看如何实现,前提是它实际上可以这样实现。

python oop iterator

7
推荐指数
1
解决办法
4879
查看次数

标签 统计

iterator ×1

oop ×1

python ×1