Задать вопрос
  • Ошибка аргументоа (мешает self), что делать?

    @srrymom
    Проблема заключается в том, что метод download ожидает аргумент self, который представляет собой ссылку на конкретный экземпляр класса.
    def download(link, path, mp, self):   # требуется self  аргументом
            l = 0
            self.change_value.emit(l) # используется self
            ...

    Но в вашем коде этот метод вызывается следующим образом:
    Progress.download(link, path, mp) # Метод вызывается у класса, никакие экземпляры не передаются


    Можно написать следующий код, и он будет работать:
    ...
    progress = Progress() # создание экземпляра класса
    thread = Progress.download(link, path, mp, progress) # вызов метода и передача экземпляра класса
    self.thread.start()

    Однако, более хорошей практикой является расположение аргумента self первым в методе. В питоне можно вызывать методы напрямую у экземпляра класса, и тогда ссылка на этот экземпляр будет передаваться автоматически, первым аргументом, обычно называемым self.

    Код может выглядеть так:
    ...
        def download(self, link, path, mp,): # ставим self первым
            l = 0
            self.change_value.emit(l)
       ...
       ...
    progress = Progress() # создание экземпляра класса
    thread = progress.download(link, path, mp) # то же самое что и Progress.download(progress, link, path, mp) 
    self.thread.start()
    Ответ написан