PyQT中多重继承,其中继承的父类有QObject或QObject的子孙类

简介: 如果Child多重继承(Parent_1,Parent_2,Parent_3),其super函数 super(Child, self).__init__()  则会执行继承的最左侧的父类:Parent_1.__init__()   但是如果Parent_2是QObject或QObject的子孙类, 在Child的中__init__()中执行QObject.__init__(self) 则会使Parent_3.__init__(self)被执行 原因不明。

如果Child多重继承(Parent_1,Parent_2,Parent_3),其super函数

super(Child, self).__init__()

 则会执行继承的最左侧的父类:Parent_1.__init__()

 

但是如果Parent_2是QObject或QObject的子孙类,

在Child的中__init__()中执行QObject.__init__(self)

则会使Parent_3.__init__(self)被执行

原因不明。。。。。。。。。

 

例子哈:

from PyQt5.QtCore import  QObject
class Parent_1:
    def __init__(self):
        print('Parent_1.__init__')
        
class Parent_2(Parent_1):
    def __init__(self):
        super(Parent_2, self).__init__()
        print('Parent_2.__init__')
        
class Parent_3:
    def __init__(self):
        print('Parent_3.__init__')      

class Child_2( QObject , Parent_2,Parent_3):
        def __init__(self):
            #QObject.__init__(self) 
            super(QObject, self).__init__()
            #super(Child_2, self).__init__()
            
if __name__ == '__main__': 

    import sys
    from PyQt5.QtWidgets import QApplication
    app = QApplication(sys.argv)  
 #####################################################   

    
    print('---------------------------')
    child_2 =     Child_2()    
  #####################################################   
    sys.exit(app.exec_())

 输出结果为:

 

相关文章
|
1天前
|
关系型数据库 MySQL Python
mysql之python客户端封装类
mysql之python客户端封装类
|
2天前
|
Python
python 类中的内置方法
python 类中的内置方法
|
1月前
|
供应链 数据挖掘 Serverless
【python】美妆类商品跨境电商数据分析(源码+课程论文+数据集)【独一无二】
【python】美妆类商品跨境电商数据分析(源码+课程论文+数据集)【独一无二】
【python】美妆类商品跨境电商数据分析(源码+课程论文+数据集)【独一无二】
|
30天前
|
Python
12类常用的Python函数
12类常用的Python函数
|
28天前
|
存储 程序员 Python
Python类的定义_类和对象的关系_对象的内存模型
通过类的定义来创建对象,我们可以应用面向对象编程(OOP)的原则,例如封装、继承和多态,这些原则帮助程序员构建可复用的代码和模块化的系统。Python语言支持这样的OOP特性,使其成为强大而灵活的编程语言,适用于各种软件开发项目。
17 1
|
30天前
|
存储 程序员 C++
python类及其方法
python类及其方法
|
29天前
|
C++ Python
python类方法中使用:修饰符@staticmethod和@classmethod的作用与区别,还有装饰器@property的使用
python类方法中使用:修饰符@staticmethod和@classmethod的作用与区别,还有装饰器@property的使用
13 1
|
30天前
|
数据采集 开发工具 Python
海康威视工业相机SDK+Python+PyQt开发数据采集系统(支持软件触发、编码器触发)
该系统基于海康威视工业相机SDK,使用Python与PyQt开发,支持Gige与USB相机设备的搜索及双相机同时显示。系统提供软件触发与编码器触发模式,并可在数据采集过程中实时保存图像。此外,用户可以调节曝光时间和增益,并进行信息输入,这些信息将被保存至配置文件以便下次自动加载。参数调节与实时预览等功能进一步增强了系统的实用性。
55 1
|
1月前
|
对象存储 Python
Python代码解读-理解-定义一个User类的基本写法
以上描述清晰地阐述了如何在Python中定义 `User`类的基本方法以及如何创建和使用该类的实例。这是面向对象编程中的核心概念,是紧密结合抽象和实现,封装数据并提供操作数据的接口。由于用简单通用的语言易于理解,这样的解释对于初学者而言应该是友好且有帮助的。
23 4
|
1月前
|
测试技术 数据处理 数据格式
Python中动态类和动态方法的创建与调用
【8月更文挑战第5天】在Python中,`type`函数可用于创建动态类,结合`types.MethodType`可创建动态方法。例如,定义`dynamic_method`后,可通过`type`创建包含该方法的`DynamicClass`。同样,对于已存在的类实例,可通过`types.MethodType`绑定新方法。这种动态特性适用于自动化测试框架或数据处理应用等场景,实现根据需求动态生成类及方法以执行特定逻辑。