(PyQt5)是QThread的抽象类吗?

问题描述 投票:0回答:1

因此,显然,当我们使用QThread在pyqt中进行多线程处理时,我们必须将QThread子类化,并且不能直接实例化它。这意味着QThread是一个抽象类。

很好,但是我不明白的是,当我们将QThread子类化时,我们仅覆盖run()方法,但是为了使该多线程功能真正起作用,我们必须调用我们根本没有覆盖的QThread子类的start()方法(AFAIK如果我们将一个抽象类作为子类,则必须覆盖它在子类中拥有的每个方法,否则无法实例化)。

那么start()和finish方法从哪里来?

python multithreading pyqt qthread
1个回答
2
投票

并非抽象类的每个方法本身都是抽象的。对于QThread,方法start()finish()在所有子类中的行为相同,因此它们具有具体的实现供您使用,但是run()没有基础实现(因为定义线程的功能),使之抽象并需要自定义实现。

© www.soinside.com 2019 - 2024. All rights reserved.