gpt4 book ai didi

python - 我可以为对象提供单击命令,使用继承来消除重复代码吗?

转载 作者:太空宇宙 更新时间:2023-11-03 14:15:41 25 4
gpt4 key购买 nike

如果你看看我的lidtk存储库,尤其是 classifiers ,您可以看到以下文件几乎相同(current version,以防将来修复此问题):

  • cld2_mod.py
  • langdetect_mod.py
  • langid_mod.py
  • text_cat.py

它们都继承自lidtk.LIDClassifier并且它们都有命令

Usage: lidtk <<module name>> [OPTIONS] COMMAND [ARGS]...

Use the <<module name>> language classifier.

Options:
--help Show this message and exit.

Commands:
get_languages
predict
print_languages
wili
wili_k
wili_unk

是否可以删除重复的点击代码?我想使用继承来消除重复代码。

最佳答案

浏览一下您的存储库,我认为您想要的是这样的:

import click

def group_factory(group, name, params):
"""This creates a subcommand 'name' under the existing click command
group 'group' (which can be the main group), with sub-sub-commands
'cmd1' and 'cmd2'. 'params' could be something to set the context
for this group.
"""

@group.group(name=name)
def entry_point():
pass

@entry_point.command()
@click.option("--foo")
def cmd1(foo):
print("CMD1", name, params, foo)

@entry_point.command()
@click.option("--bar")
def cmd2(bar):
print("CMD2", name, params, bar)

return entry_point

您可以使用group_factory的返回值作为一组不同脚本中的主入口点:

if __name__ == "__main__":
ep = group_factory(click, "", "something")
ep()

...或者您可以使用group_factory在不同名称(并使用不同params)下的某个顶级命令下重复构建相同的子命令层次结构:

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

group_factory(cli, "a", 1)
group_factory(cli, "b", 2)
group_factory(cli, "c", 3)

关于python - 我可以为对象提供单击命令,使用继承来消除重复代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48237604/

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