我有一个问题。首先,我知道这段代码可以独立存在,而不是在类中,但是我更希望它在类中。其次,在运行代码时,出现此错误TypeError: set_options() takes exactly 2 arguments (1 given)
。
这是我的代码。如果有人能指出正确的方向,我将不胜感激。我假设set_options方法没有得到我的jobj实例。我是否能正确地假设这一点,以及如何解决这个问题? ps。我确实输入正确,这是我在终端python test.py radar 127.0.0.1 hashNumber testplan:speed
上的py命令
class TransferStuff(object):
tool = sys.argv[1]
target = sys.argv[2]
hash = sys.argv[3]
options = sys.argv[4]
def set_options(self, test_options):
option_arr = test_options.split(',')
new_arr = [i + ':{}'.format(i) for i in option_arr if ':' not in i]
for i in option_arr:
if ':' in i:
new_arr.append(i)
d = {}
for i in new_arr:
temp = i.split(':')
d[temp[0]] = temp[1]
return d
data = {'target': target, 'test': tool, 'HASH': hash,
'options': set_options(options)}
def write_to_json(self):
"""Serialize cli args and tool options in json format.
Write stream to json file.
"""
with open('envs.json', 'w') as fi:
json.dump(TransferStuff.data, fi)
if __name__ == "__main__":
try:
jobj = TransferStuff()
jobj.write_to_json()
答案 0 :(得分:0)
您的方法在类内部,您需要创建该类的实例:
transfer_stuff_instance = TransferStuff()
并使用此实例调用方法:
transfer_stuff_instance.ser_options(options)