如何将自定义类型传递给Python click

问题描述 投票:0回答:1

我有这个数据类

@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

任何帮助谢谢

python python-click custom-type
1个回答
1
投票

出于您的目的,最简单的方法是使用

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

© www.soinside.com 2019 - 2024. All rights reserved.