(PyQt5) QThread 是一个抽象class?

(PyQt5) is QThread an abstract class?

所以显然当我们在pyqt中multi-threading使用QThread时,我们将不得不subclass QThread并且它不能被直接实例化。这意味着 QThread 是一个抽象的 class.

很好,但我不明白的是,当我们在 classing QThread 时,我们只重写了 运行() 方法,但为了真正得到这个 multi-threading 功能要工作,我们必须调用我们根本没有覆盖的 QThread subclass 的 start() 方法(AFAIK 如果我们是 subclassing 抽象 class,我们将不得不覆盖它在我们的 child class 中的每个方法,否则它无法被实例化。

那么 start() 和 finish 方法从何而来?

并非每个抽象方法 class 本身都是抽象的。在 QThread 的情况下,方法 start()finish() 将在所有子 class 中具有相同的行为,因此它们有具体的实现供您使用,但是没有 run() 的基本实现(因为它定义了线程的作用)所以它是抽象的并且需要自定义实现。