Вопрос

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

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

С другой стороны, возможно, все методы PyQt являются просто оболочками для кода C ++, на который, конечно, не повлияло бы ничего, что я делаю с точки зрения подклассов Python.

Кто-нибудь навскидку знает, в чем дело?

Это было полезно?

Решение

Если базовые методы C ++ являются виртуальными, ваши методы Python, которые их переопределяют, будут вызываться каждый раз, когда их вызывает код C ++.Если это просто обычные методы, любой код C ++ будет вызывать исходные методы C ++ по умолчанию (хотя код Python будет вызывать методы Python, потому что он видит объект Python и все методы там "виртуальные").

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top