类实例方法恰好需要两个arg,一个给定

时间:2018-06-29 16:22:10

标签: python instance

我有一个问题。首先,我知道这段代码可以独立存在,而不是在类中,但是我更希望它在类中。其次,在运行代码时,出现此错误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()

1 个答案:

答案 0 :(得分:0)

您的方法在类内部,您需要创建该类的实例:

transfer_stuff_instance = TransferStuff()

并使用此实例调用方法:

transfer_stuff_instance.ser_options(options)

相关问题