Luigi参数默认值和模拟

2024-05-26 11:55:48 发布

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

我试图模仿为luigi参数提供默认值的东西。在

一个愚蠢的例子展示了我想要实现的目标:

测试任务:

import luigi
from bar import Bar

bar = Bar()

class Baz(luigi.Task):

    qux = luigi.Parameter(default=bar.bar())

    def baz(self):
        return self.qux;

    def foo(self):
        return bar.bar()

单元测试代码:

^{pr2}$

看来luigi参数逻辑早于补丁出现。在

在本例中,test_patched_foo通过,test_patched_baz失败。所以补丁确实发生了,但是发生在luigi.Parameter(default=bar.bar())行的调用之后。在

有没有可能用这种方式来模仿和修补某些东西?在


Tags: testimportselfdefault参数returnparameterfoo
1条回答
网友
1楼 · 发布于 2024-05-26 11:55:48

尝试将qux = luigi.Parameter(default=bar.bar())行移动到Baz类的__init__方法中。当它在__init__之外时,它是在类定义上设置的,而不是实例创建,但是将它放入__init__中会延迟它的创建,直到创建一个Baz实例。别忘了调用super类上的__init__

class Baz(luigi.Task):

    def __init__(self, *args, **kwargs):
        super(Baz, self).__init__(*args, **kwargs)

        self.qux = luigi.Parameter(default=bar.bar())

    ...

相关问题 更多 >