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)被执行

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

例子哈:

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_())

输出结果为:

时间: 2024-08-29 07:25:53

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

C++反汇编第四讲,认识多重继承,菱形继承的内存结构,以及反汇编中的表现形式.

目录: 1.多重继承在内存中的表现形式 多重继承在汇编中的表现形式 2.菱形继承 普通的菱形继承 虚继承 汇编中的表现形式 一丶多重继承在内存中的表现形式 高级代码: class Father1 { public: Father1(){}//空构造 virtual ~Father1(){} //空析构 virtual void Player(){} //玩耍的函数 int m_price;//金钱 }; class Father2 { public: Father2(){} virtual ~F

python进阶四(类的继承)【4-4 python中多重继承】

python中多重继承 除了从一个父类继承外,Python允许从多个父类继承,称为多重继承. 多重继承的继承链就不是一棵树了,它像这样: 1 class A(object): 2 def __init__(self, a): 3 print 'init A...' 4 self.a = a 5 6 class B(A): 7 def __init__(self, a): 8 super(B, self).__init__(a) 9 print 'init B...' 10 11 class C(

python中多重继承与获取对象

1.python中多重继承 除了从一个父类继承外,Python允许从多个父类继承,称为多重继承. 多重继承的继承链就不是一棵树了,它像这样: class A(object): def __init__(self, a): print 'init A...' self.a = a class B(A): def __init__(self, a): super(B, self).__init__(a) print 'init B...' class C(A): def __init__(self,

Java中子类继承了父类的私有属性及方法吗?

最近学习继承,从书中看到子类继承父类,子类拥有父类所有的属性和方法,于是使用程序去验证,发现父类的私有属性和私有方法,子类是不能访问的,当然一些父类的私有属性可能可以通过相应的方法访问到,但是私有的方法似乎不能简单的访问,这里暂不考虑Java反射机制,于是我分析,子类不能继承父类私有的属性及方法,但是分析了内存后,我发现我是错的,在一个子类被创建的时候,首先会在内存中创建一个父类对象,然后在父类对象外部放上子类独有的属性,两者合起来形成一个子类的对象.所以所谓的继承使子类拥有父类所有的属性和方法

JavaSE8基础 不同包下的子类中,创建子类对象可以继承到父类的 受保护/公有方法

os :windows7 x64    jdk:jdk-8u131-windows-x64    ide:Eclipse Oxygen Release (4.7.0)        代码: 父类: package jizuiku; public class Person { void showDefault() { System.out.println("showDefault"); } private void showPrivate() { System.out.println(&

类的继承---多重继承(两个父类有相同方法名和参数)

1 # -*-coding:gb2312-*- 2 3 #Function:测试一下多继承 4 5 class A: 6 7 def F1(self): 8 print '调用A.F1()' 9 10 def F2(self): 11 print '调用A.F2()' 12 self.F1() 13 14 def F3(self): 15 print '调用A.F3()' 16 self.F1() 17 18 19 class B: 20 21 def F2(self): 22 print '调

javascript中子类如何继承父类

参考阮一峰的文章:http://javascript.ruanyifeng.com/oop/inheritance.html#toc4 function Shape() { this.x = 0; this.y = 0; } Shape.prototype.move = function (x, y) { this.x += x; this.y += y; console.info('Shape moved.'); }; function Rectangle() { Shape.call(thi

js中的子类继承父类的方法和属性

上次讲了个简单的继承,这次 咱们讲个稍微复杂点的,那就是让子类继承父类的属性和方法,假设人 (Person)是父类,工人(Worker)是子类,让worker继承person的属性和方法: 父类: function Person(name,age) { this.name=name; this.age=age; } Person.prototype.showName=function() { alert(this.name); } function worker(name,age,job) {

java如何区分同时继承的父类和实现的接口中相同的方法

问题是这样的:一个父类中有一个方法,一个接口中有一个与父类方法重名的方法,现在子类中要同时继承父类和实现接口,那么应该怎么区分子类的方法是重写的父类的还是实现的接口的. 基类代码: public class Father { public Father() { System.out.println("基类构造函数{"); show(); System.out.println("}"); } public void show() { System.out.printl