Невозможно создать поток, потому что «принимает 1 позиционный аргумент, но 4 задан» только тогда, когда я даю ему строку длиннее 1 - PullRequest
0 голосов
/ 08 февраля 2020

Я делаю чат-сервер в python. До сих пор я создавал потоки нормально, но когда я пытаюсь создать поток с аргументом имени пользователя, он завершается с ошибкой, описанной выше, но только когда имя пользователя превышает 1 символ.

Если я дайте ему имя пользователя "A", все работает нормально, но имя пользователя "Alex" выдает ошибку. Как это исправить?

Они в одном классе.

Я создаю тему с

Thread(target=Main.ManageClientHighLevel, args=(Username)).start()

И начало этого функция:

def ManageClientHighLevel(Username):

Как это исправить?

Ответы [ 2 ]

2 голосов
/ 08 февраля 2020

Вы должны преобразовать имя пользователя в кортеж: (Username,), поскольку строка является целочисленной, что означает, что «имя пользователя» будет фактически рассматриваться как «(u, s, e, r, n, a, m, e) ».

1 голос
/ 08 февраля 2020
Для аргумента

Thread args ожидается Iterable, поэтому вам нужно будет указать свой единственный аргумент в tuple:

Thread(target=Main.ManageClientHighLevel, args=(Username,)).start()

В противном случае он будет обрабатывать ваш единственный строка как Iterable и итерация по каждому символу.

...