我有一个类应该提供几个需要不同输入的函数。我想在其他脚本中使用这些函数,或者仅使用命令行。
e.g。我有班级“测试”。它有一个“quicktest”功能(基本上只是打印一些东西)。 (来自命令行)我希望能够
$ python test.py quicktest "foo" "bar"
而quicktest是函数的名称,而“foo”和“bar”是变量。
另外(来自另一个脚本)我想
from test import test
# this
t = test()
t.quicktest(["foo1", "bar1"])
# or this
test().quicktest(["foo2", "bar2"])
我无法将其付诸实践。我设法为第一个请求写了一个类,为第二个请求写了一个,但不是两个。问题是我有时不得不通过(self)调用函数,有时不需要调用函数,而且我必须随时提供给定的参数,这也有点复杂。
那么,是否有人对此有所了解?
仅从命令行工作:
class test:
def quicktest(params):
pprint(params)
if (__name__ == '__main__'):
if (sys.argv[1] == "quicktest"):
quicktest(sys.argv)
else:
print "Wrong call."
仅适用于其他脚本:
class test:
_params = sys.argv
def quicktest(self, params):
pprint(params)
pprint(self._params)
if (__name__ == '__main__'):
if (sys.argv[1] == "quicktest"):
quicktest()
else:
print "Wrong call"
答案 0 :(得分:4)
尝试以下操作(请注意,不同的缩进,if __name__
部分 不再是<{1}}的一部分):
test
来自其他剧本:
class test:
def quicktest(params):
pprint(params)
if __name__ == '__main__':
if sys.argv[1] == "quicktest":
testObj = test()
testObj.quicktest(sys.argv)
else:
print "Wrong call."
答案 1 :(得分:1)
if __name__ == '__main__':
块必须位于顶层:
class Test(object): # Python class names are capitalized and should inherit from object
def __init__(self, *args):
# parse args here so you can import and call with options too
self.args = args
def quicktest(self):
return 'ret_value'
if __name__ == '__main__':
test = Test(sys.argv[1:])
答案 2 :(得分:0)
您可以在argparse的帮助下解析命令行,以解析命令行中的值。
您的类具有参数的方法和关联方法。