栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

获取发送到click.group()的子命令的参数

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

获取发送到click.group()的子命令的参数

这可以通过以下

click.Group.invoke()
方法来完成:

自订类别:

class MyGroup(click.Group):    def invoke(self, ctx):        ctx.obj = tuple(ctx.args)        super(MyGroup, self).invoke(ctx)

使用自定义类:

然后使用自定义组,将其作为

cls
参数传递给
group
装饰器,如下所示:

@click.group(cls=MyGroup)@click.pass_contextdef cli(ctx):    args = ctx.obj    ....

这是如何运作的?

之所以

click
可行,是因为它是一个设计良好的OO框架。该
@click.group()
装饰通常实例化一个
click.Group
对象,但允许与被骑过这种行为
cls
的参数。因此,
click.Group
在我们自己的类中继承所需的方法是一件相对容易的事情。

在这种情况下,我们过度

click.Group.invoke()
争吵,争夺论点,然后将其投入
ctx.obj
实地。然后可以在
cli()
函数中访问它们。

测试代码:

import clickclass MyGroup(click.Group):    def invoke(self, ctx):        ctx.obj = tuple(ctx.args)        super(MyGroup, self).invoke(ctx)@click.group(cls=MyGroup)@click.pass_contextdef cli(ctx):    args = ctx.obj    click.echo('cli: {} {}'.format(ctx.invoked_subcommand, ' '.join(args)))@cli.command()@click.argument('task')@click.argument('task_id')def sync(task, task_id):    click.echo('Synching: {}'.format(task))cli('sync task taskid'.split())

结果:

cli: sync task taskidSynching: task


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/626134.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号