4

从 Python 中使用 Qt 小部件的常用方法似乎是对它们进行子类化。

Qt 小部件类有很多方法,因此我不可避免地要在子类中添加一个方法,其名称与从 Qt 小部件继承的方法相同。在 Python 中,所有方法都是虚拟的,所以我担心的是某些 Qt 代码最终可能会调用我的方法而不是预期的 Qt 方法——在最坏的情况下,会破坏一些不容易显示的边缘情况在测试中。

另一方面,也许所有 PyQt 方法都只是 C++ 代码的包装器,这当然不会受到我在 Python 子类化方面所做的任何事情的影响。

任何人都知道这是什么情况?

4

1 回答 1

3

如果底层 C++ 方法是虚拟的,则覆盖它们的 Python 方法将在 C++ 代码调用它们时被调用。如果它们只是常规方法,则默认情况下,任何 C++ 代码都会调用原始 C++ 方法(尽管 Python 代码会调用 Python 方法,因为它看到 Python 对象并且所有方法都是“虚拟”的)。

于 2009-12-01T20:16:28.797 回答