Унаследовать класс потока в Python - PullRequest
0 голосов
/ 15 марта 2019

У меня есть несколько вопросов о наследовании класса потока.

class MyThread(threading.Thread):
  def __init__(self, num):
    threading.Thread.__init__(self)
    self.num = num

  def run(self):
    print("Thread", self.num)
    time.sleep(1)

почему я не могу переопределить только метод run? В документе Python threading упоминается, что "Класс Thread представляет действие, которое выполняется в отдельном потоке управления. Существует два способа указать действие: путем передачи вызываемого объекта в конструктор или путем переопределения метода run () в подклассе. "

Почему приведенный выше пример кода также переопределяет конструктор?

1 Ответ

2 голосов
/ 15 марта 2019

Конструктор переопределяется для передачи параметра num из места, где создается экземпляр MyThread, в метод run.

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

Если вам не нужно передавать параметры, вы можете переопределить только метод run.

...