python - 类中的方法可以是生成器吗?

标签 python methods generator

将类中的方法用作生成器是否可接受/Pythonic?我找到的所有示例都在函数中显示了 yield 语句,而不是在类中。

这是一个示例工作代码:

class SomeClass(object):
    def first_ten(self):
        for i in range(10):
            yield i

    def test(self):
        for i in self.first_ten():
            print i

SomeClass().test()

最佳答案

是的,这是完全正常的。例如,它通常用于实现 object.__iter__() method。使对象成为可迭代对象:

class SomeContainer(object):
    def __iter__(self):
        for elem in self._datastructure:
            if elem.visible:
                yield elem.value

但是,不要受限于该通用模式;任何需要迭代的东西都是生成器方法的候选对象。

关于python - 类中的方法可以是生成器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37349439/

相关文章:

python - rabbitmq 使用 pika 线程

python - 为什么 go build 找不到 Py_None?

python - 具有两个轴的 Matplotlib 游标值

ide - 不接受Webstorm生成器功能

python - 这是生成器表达式吗?

python - f 字符串不支持行连接吗?

java - 使用 for 循环打印数字的每个数字

同一类和相同实现中的 JAVA 方法,但作为参数的对象类型不同

java - 尝试弄清楚递归基础知识

python - 将元素添加到 python 生成器