2015-02-11 15 views
3

我有这样的代码下面,这两个foo和酒吧有用户选项,我需要写:两次如何通过使用使用CMD相同的选项在同一组中的python-点击

@click.option('--user', default='*') 

每个功能。

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

@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组中的一个地方。我可以使用点击操作吗?

回答

3

传的背景下:

@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将呼应酒吧猫子命令

0

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

USER_DEFAULT = {'para' : '--user', 'default' : '*'} 

@click.option(**USER_DEFAULT) 

方法2.将它包裹在你自己的装饰器中,装满默认参数。

相关问题