__iter__方法的主体有什么意义?

时间:2014-12-17 06:21:46

标签: python class oop iterator python-3.4

Python中类定义中__iter__方法体的重要性是什么? 我的理解是__iter__方法必须返回迭代器;那么每个__iter__方法都不应该只包含一个return语句,它返回一个迭代器(在其他地方定义)?在某些情况下,为什么__iter__方法中有正文?

3 个答案:

答案 0 :(得分:2)

__iter__方法本身就是迭代器 - 以生成器的形式非常常见:

def __iter__(self):
    for datum in self.data:
        yield datum + 1

当然,这可能与你想要的一样复杂。

只有一个案例,你最终得到一行__iter__,并且当你包装一个其他的可迭代者并且想要推迟它时。你也可以问一下"点" __getattr____contains__

答案 1 :(得分:1)

我不能完全理解你的身体意义。我想你在谈论方法__iter__的定义。

有时您可以使用yield返回生成器。在这种情况下,您可以在__iter__

的正文中编写生成逻辑

或者返回另一个迭代器可能涉及一些逻辑。所以它并不总是简单的return

答案 2 :(得分:-1)

iter 方法返回迭代器或定义 getitem 方法,从零开始执行顺序索引,并在索引不再有效时引发IndexError。