gpt4 book ai didi

python - 使命令可用于 python 中的两个组单击?

转载 作者:太空宇宙 更新时间:2023-11-04 02:44:37 24 4
gpt4 key购买 nike

我正在使用 click 在 Python 中编写一个 cli 程序,我需要编写如下内容:

import click


@click.group()
def root():
"""root"""
pass


@root.group()
def cli():
"""test"""
pass


@root.group()
def cli2():
"""test"""
pass


@cli.command('test1')
@cli2.command('test1')
def test1():
"""test2"""
print 1234
return


root()

但这会失败:

TypeError: Attempted to convert a callback into a command twice.

如何在多个组之间共享命令?

最佳答案

group.command()装饰器是一个执行两个功能的快捷方式。一种是创建命令,另一种是将命令附加到组。

因此,要与多个组共享一个命令,您可以像这样装饰一个组的命令:

@cli.command('test1')

然后,由于命令已经创建,您可以简单地将点击命令对象添加到其他组,如:

cli2.add_command(test1)

测试代码:

import click


@click.group()
def root():
"""root"""
pass


@root.group()
def cli1():
click.echo('cli1')


@root.group()
def cli2():
click.echo('cli2')


@cli1.command('test1')
@click.argument('arg1')
def test1(arg1):
click.echo('test1: %s' % arg1)

cli2.add_command(test1)

root('cli2 test1 an_arg'.split())

结果:

cli2
test1: an_arg

关于python - 使命令可用于 python 中的两个组单击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45500223/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com