首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用python-click对同一组中的cmd使用相同的选项

如何使用python-click对同一组中的cmd使用相同的选项
EN

Stack Overflow用户
提问于 2015-02-11 08:20:34
回答 2查看 664关注 0票数 4

我有如下代码,foo和bar都有一个用户选项,我需要编写:

代码语言:javascript
复制
@click.option('--user', default='*')

每个功能两次。

但实际上我有很多这样的cmds,所以这是很多重复的代码。

代码语言:javascript
复制
@click.group(help="cmd group")
def main():
    pass


@click.command(name='foo')
@click.option('--user', default='*')
def foo(user):
    click.secho(user, fg='green')


@click.command(name='bar')
@click.option('--user', default='*')
def bar(user):
    click.secho(user, fg='green')


main.add_command(foo)
main.add_command(bar)

我想要的是向cmd组中的一个位置添加相同的选项。现在我可以用点击来做这个了吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-02 16:25:07

在上下文中传递:

代码语言:javascript
复制
@click.group(help="cmd group")
@click.option('--user', default='*')
@click.pass_context
def main(ctx, user):
    ctx.obj = {'user': user}


@click.command(name='foo')
@click.pass_context
def foo(ctx):
    click.secho(ctx.obj['user'], fg='green')


@click.command(name='bar')
@click.pass_context
def bar(ctx):
    click.secho(ctx.obj['user'], fg='green')


main.add_command(foo)
main.add_command(bar)

mycli --user cats bar将从bar子命令中回显猫

票数 4
EN

Stack Overflow用户

发布于 2015-02-11 08:24:59

方法1.我假设@click.option()的第一个参数名是para

代码语言:javascript
复制
USER_DEFAULT = {'para' : '--user', 'default' : '*'}

@click.option(**USER_DEFAULT)

方法2.将其包装在您自己的装饰器中,其中填充了默认参数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28449555

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档