我有这个数据类
@dataclass
class Param:
param1: float = 5
param2: int = 20
还有另一堂课
class MyClass:
def __init__(self, param: Param, plot: bool = True):
self._param = param
self._plot = plot
def run(self):
pass
我创建了一个文件
cli.py
,我有
import Myclass
import click
@click.command(name="run")
@click.option("--param", required=False)
@click.option("--plot", required=False)
def run(param, plot):
myclass = Myclass(param, plot)
myclass.run()
我想从终端运行它,如下所示:
run --param what_to_pass_here? --plot True
任何帮助谢谢
出于您的目的,最简单的方法是使用
tuple
参数,该参数已被 Click
支持:
@click.command(name="run")
@click.option("--param", type=(float, int), required=False)
@click.option("--plot", required=False)
def run(param, plot):
myclass = MyClass(Param(param[0], param[1]), plot)
myclass.run()
然后你可以这样调用你的程序:
run --param 2.5 12 --plot True
单击将自动解析它并将其转换为所需的类型,否则将返回一个不错的错误消息。
您可以在此处找到有关 Click 元组参数的更多信息:https://click.palletsprojects.com/en/8.0.x/options/#tuples-as-multi-value-options