Python 初始化时从其他参数创建luigi参数

Python 初始化时从其他参数创建luigi参数,python,luigi,Python,Luigi,我有以下问题-我可以使用一个参数的值来定义另一个参数吗?这是我想做的一个例子。 假设我有一个如下所示的配置文件: [MyTaskRunner] logdir=/tmp/logs numruns=2 class MyTaskRunner(luigi.Task): logdir=luigi.Parameter(default=None) rundate=luigi.Parameter(default=today) 我对MyTaskRunner的定义如下: [MyTaskR

我有以下问题-我可以使用一个参数的值来定义另一个参数吗?这是我想做的一个例子。 假设我有一个如下所示的配置文件:

[MyTaskRunner]
logdir=/tmp/logs
numruns=2
class MyTaskRunner(luigi.Task):
      logdir=luigi.Parameter(default=None)
      rundate=luigi.Parameter(default=today)
我对MyTaskRunner的定义如下:

[MyTaskRunner]
logdir=/tmp/logs
numruns=2
class MyTaskRunner(luigi.Task):
      logdir=luigi.Parameter(default=None)
      rundate=luigi.Parameter(default=today)
其中logdir是从配置文件获得的参数,rundate是在运行时传入的参数

现在,假设我希望像这样定义一个新变量
logpath\u str

       logpath_str="{}/{}".format(logdir, rundate)
是否可以将其定义为参数

解决方案是指定默认值,如下所示:

       logpath=luigi.Parameter(default=logpath_str)

欢迎任何建议。

在初始化类之前(在
\uuuuuu init\uuuu
期间),参数值不会被解析,因此实现您想要的行为的一个简单方法是实现
\uuuuu init\uuuu
yourslef,并在调用super之后使用默认值初始化
日志路径

class MyTaskRunner(luigi.Task):
    logdir=luigi.Parameter(default=None)
    logpath=luigi.Parameter(default=None)
    rundate=luigi.Parameter(default=today)

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

        if self.logpath is None:
            self.logpath = "{}/{}".format(self.logdir, self.rundate)