Метод экземпляра класса принимает ровно два аргумента, один - PullRequest
0 голосов
/ 29 июня 2018

У меня небольшая проблема. Во-первых, я знаю, что этот код может стоять отдельно и не быть в классе, но я бы предпочел, чтобы он был в классе. Во-вторых, когда я запускаю код, я получаю эту ошибку TypeError: set_options() takes exactly 2 arguments (1 given).

Вот мой код. Если бы кто-нибудь мог указать мне правильное направление, я был бы признателен. Я предполагаю, что метод set_options не получает мой экземпляр jobj. Правильно ли я полагаю, что и как можно это исправить? пс. У меня есть правильный импорт, и вот моя команда py на терминале python test.py radar 127.0.0.1 hashNumber testplan:speed

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 голосов
/ 29 июня 2018

Ваш метод находится внутри класса, вам нужно создать экземпляр класса:

transfer_stuff_instance = TransferStuff()

И вызвать метод с этим экземпляром:

transfer_stuff_instance.ser_options(options)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...