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