关于内置程序__

2024-04-18 23:10:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我在学习python,读一本流利的python书! 在完成一些类实现时,我停了下来,看到了以下代码片段:

def __iter__(self):
    return iter(self._components)

由于components是一个浮点数组,我的问题是:为什么在组件上调用iter()方法,尽管它已经是一个iterable?。你知道吗


Tags: 方法代码selfreturndefcomponents组件数组
1条回答
网友
1楼 · 发布于 2024-04-18 23:10:37

documentation doesn't make it very clear,这是因为__iter__必须(而不是应该)返回一个迭代器,而不是iterable

% python
Python 3.6.3 (default, Oct  3 2017, 21:45:48) 
[GCC 7.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> class Foo:
...     def __iter__(self):
...         return []
... 
>>> iter(Foo())
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: iter() returned non-iterator of type 'list'

相关问题 更多 >