为什么我不能使用方法类作为生成器?

时间:2018-09-16 10:04:05

标签: python python-3.x generator

我的处境很奇怪。我知道我可以像以前一样使用方法类作为生成器。 在另一个问题Can a method within a class be generator?中,有人问同样的事情,他们说是的,可以做到。

但是,尝试时出现错误。这是一个最小的示例:

DFresult=3

“方法”对象不是迭代器

为什么?这怎么可能? 谢谢 编辑:固定代码缩进

1 个答案:

答案 0 :(得分:3)

您需要调用该方法:

a = SomeClass()
it = a.first_ten()
next(it)

其原因是该方法本身不是生成器。这是一个 generator函数,每次调用它时都会返回一个新的生成器。

这同样适用于非方法生成器功能。请注意此代码段中的类型:

>>> def f():
...     yield from range(10)
...
>>> type(f)
<class 'function'>
>>> type(f())
<class 'generator'>