【发布时间】:2021-04-10 09:04:24
【问题描述】:
我正在创建一个多级继承。我怀疑为什么我在构造函数 (__init__) 中的基类方法没有得到调用,只有 super 正在执行。
这是我的例子。
from PyQt5.QtWidgets import QMainWindow
class PSheet(object):
def __init__(self):
print('PSheet - Start')
super(PSheet, self).__init__()
print('PSheet - End')
self.some_method()
def some_method(self):
print('PSheet - In Some Method')
class config(object):
def __init__(self):
print('config - Start')
super(config, self).__init__()
print('config - End')
class BaseClassWithQt(QMainWindow, config):
def __init__(self):
print('BaseClassWithQt - Start')
super(BaseClassWithQt, self).__init__()
print('BaseClassWithQt - End')
class DerivedClassWithQt(BaseClassWithQt, PSheet):
def __init__(self):
print('DerivedClassWithQt - Start')
super(DerivedClassWithQt, self).__init__()
print('DerivedClassWithQt - End')
print(DerivedClassWithQt.__mro__)
test_with_qt = DerivedClassWithQt()
输出
(<class '__main__.DerivedClassWithQt'>, <class '__main__.BaseClassWithQt'>, <class '__main__.config'>, <class '__main__.PSheet'>, <class 'object'>)
DerivedClassWithQt - Start
BaseClassWithQt - Start
我很困惑我做错了什么,因为我没有得到所有构造函数中可用的所有打印。
为了澄清,我也为这两种情况打印了 mro。
我需要纠正什么?
【问题讨论】:
-
你的问题看起来很像其他关于多重继承的问题(例如stackoverflow.com/questions/9575409/…)。 Qt与它无关?
标签: python python-3.x oop