Наследование направлено на специализацию класса, то есть унаследованный класс должен обладать определенными характеристиками того класса, от которого он наследует.
QGraphicsView - это QWidget, потому что, если вы создадите диаграмму целостности QGraphicsView:
┌--------------┐ ┌--------------┐
| QObject | | QPaintDevice |
└------┬-------┘ └-------┬------┘
| |
└---------┬---------┘
|
┌------┴------┐
| QWidget |
└------┬------┘
|
┌------┴------┐
| QFrame |
└------┬------┘
|
┌---------┴---------┐
|QAbstractScrollArea|
└---------┬---------┘
|
┌---------┴---------┐
| QGraphicsView |
└-------------------┘
Из этого следует, что:
- QGraphicsView - это QAbstractScrollArea.
- QGraphicsView - это QFrame.
- QGraphicsView - это QWidget.
- QGraphicsView - это объект QObject.
- QGraphicsView - это QPaintDevice.
Почему print(type(First))
возвращает <class 'sip.wrappertype'>
?
Если рассматриваются документы :
[...]
SIP реализует два супертипа, sip.simplewrapper и
sip.wrapper и мета-тип, sip.wrappertype.
sip.simplewrapper - супер-тип sip.wrapper. Супер-тип
sip.simplewrapper это объект.
sip.wrappertype - это мета-тип как sip.simplewrapper, так и
sip.wrapper. Супертипом sip.wrappertype является тип.
sip.wrapper поддерживает концепцию владения объектом, описанную в
Владение объектами и, по умолчанию, является супертипом всех
типы, которые генерирует SIP.
[...]
Из этого следует, что sip.wrappertype является метаклассом QObject. И это то, что вы делаете, так как type(FooClass)
возвращает метакласс FooClass.
Если вы хотите напечатать класс, вы должны использовать объект:
print(type(self.graphicsWidget))
Выход:
<class '__main__.First'>
Чтобы определить, что объект принадлежит к классу (или его родительским классам), вы можете использовать следующие методы, например, если это QWidget:
1.
if isinstance(obj, QtWidgets.QWidget):
print("is QWidget")
2. Если это QObject
2,1
if qobject.inherits("QWidget"):
print("is QWidget")
2,2
if qobject.isWidgetType():
print("is QWidget")