我试图模仿为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())
行的调用之后。在
有没有可能用这种方式来模仿和修补某些东西?在
尝试将
qux = luigi.Parameter(default=bar.bar())
行移动到Baz
类的__init__
方法中。当它在__init__
之外时,它是在类定义上设置的,而不是实例创建,但是将它放入__init__
中会延迟它的创建,直到创建一个Baz
实例。别忘了调用super
类上的__init__
:相关问题 更多 >
编程相关推荐