我创建了一个可以导入并按原样使用的lib,还有一个start脚本,它创建了一个main类的实例,以便在脚本中使用:
# read config, init stuff, and then create an instance
r = RepoClient(config)
现在,start脚本接受一个'command'参数,从现在起,它必须像以下那样调用:
repo config.json -c 'r.ls()'
即必须使用“r”变量。你知道吗
我希望能够删除'r'变量。为此,start脚本需要ls
函数。在创建r
实例之后,我可以通过在脚本中放入以下内容来完成:
ls = r.ls
RepoClient类支持的所有命令。你知道吗
有什么自动的吗?当然,下面的代码不起作用,但您可以理解:
from r import *
我能想到的是用一个定制的@command
注释来注释方法,迭代所有的方法并检查它,如果找到了,将它设置为一个脚本全局,但是希望电池已经支持这样的东西了;d
编辑:目前,作为最后一个参数传递的命令按以下方式运行:
exec(sys.argv[2])
不,没有办法“自动”做到这一点。但是,实际上不需要将项复制到全局命名空间中。您可以将命名空间传递给
exec
使用。您可以给您的RepoClient
一个__getitem__
方法,允许它充当名称空间。下面是一个简单的例子:它输出
Blah!
。你知道吗相关问题 更多 >
编程相关推荐