在python中,如何生成类a生成器?

2024-05-15 13:50:28 发布

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

我在varnish 4中使用varnish API。它生成日志项的方式是对其进行调度,并传入回调。简单版本:

class vlog(object):
    def __init__(self):
        self.body = []
    def callback(self, vap, cbd, priv):
        self.body.append(cbd)
    def main(self):
        self.vlog = varnishapi.VarnishLog(sopath="libvarnishapi.so")
        while True:
            ret = self.vlog.Dispatch(self.callback)
            if ret == 0:
                time.sleep(0.1)

我还需要在自我回调适当地聚合数据,但不管怎样。在

我真正的问题是:如何将上述类转换为生成器?我的理想用法是:

^{pr2}$

简单地在回调函数中放一个'yield'语句永远不会触发迭代。(令我吃惊的是,添加yield语句也会导致我所有的打印语句也不会产生输出。。。我显然漏掉了一些东西。)


Tags: self版本apidef方式callbackbody语句
1条回答
网友
1楼 · 发布于 2024-05-15 13:50:28

你想让你的类成为可编辑的。生成器是实现iterable的一种方法,但使类iterable不是必需的。在

您可以实现__iter__方法;如果将其作为生成器函数,则不需要其他任何东西:

def __iter__(self):
    while True:
        yield self.vlog.Dispatch(self.callback)

相关问题 更多 >