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)