Py学习  »  Python

Python click:分部函数中的子命令

Owen • 2 年前 • 989 次点击  

假设我有一个函数不是由 def 但是 partial() 呼叫(甚至只是通过分配)。在下面的示例中,我如何添加 bar 作为 cli 组我不能使用decorator方法(如 foo )。我失败的方法如下所示。

import functools
import click


@click.group()
def cli():
    pass


@cli.command()
def foo(myname="foo"):
    print(f"I am {myname}")


bar = functools.partial(foo, myname="bar")

# this has no effect
# cli.command(bar)

# results in: AttributeError: 'functools.partial' object has no attribute 'name'
# cli.add_command(bar)

# results in: AttributeError: 'functools.partial' object has no attribute 'hidden'
# cli.add_command(bar, name="bar")

if __name__ == "__main__":
    cli()


更新:事实上,它看起来像 partial 是这里的罪魁祸首。 This answer 在一个不同但相关的线程中,指出部分对象“缺少某些属性,特别是 __module__ __name__ ”。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/158899
 
989 次点击  
文章 [ 1 ]  |  最新文章 2 年前