我有一个类,该类使用以前未知数量的参数进行初始化,我希望使用Python的click
包在CLI上完成初始化。我的问题是我无法初始化它并运行click
命令:
$ python mycode.py arg1 arg2 ... argN click_command
设置定义数量的参数,如nargs=5
,可以解决缺少命令的问题,但我必须在命令之前输入5个参数。对于变量参数nargs=-1
,click
不将click_command
识别为命令
如何输入n个参数,然后使用click
运行命令
import click
class Foo(object):
def __init__(self, *args):
self.args = args
def log(self):
print('self.args:', self.args)
pass_foo = click.make_pass_decorator(Foo)
@click.group()
@click.argument('myargs', nargs=-1)
@click.pass_context
def main(ctx, myargs):
ctx.obj = Foo(myargs)
print("arguments: ", myargs)
@main.command()
@pass_foo
def log(foo):
foo.log()
main()
我希望能够在向我的Foo()
类传递n个参数后运行click
命令,这样我就可以初始化它并将其log()
方法作为CLI命令运行,但输出是:
Error: Missing command
我不完全确定你试图做的是解决这个问题的最佳方式。我认为将变量参数放在命令后面会更符合逻辑,并且肯定会更符合单击的工作方式。但是,您可以通过以下方式实现您的目标:
自定义类:
使用自定义类:
然后,要使用自定义类,请将其作为
cls
参数传递给组装饰器,如:测试代码:
结果:
相关问题 更多 >
编程相关推荐