单继承:
以普通方法调用父类__init__函数:
class A(object):
def __init__(self):
print("A init")
class B(A):
def __init__(self):
A.__init__(self)
print("B init")
class C(B):
def __init__(self):
B.__init__(self)
print("C init")
c = C()
运行结果:
A init
B init
C init
运行过程(可以debug查看具体步骤):
程序开始:c = C() ——> class C(B)中的B.__init__(self) ——> class B(A):中的A.__init__(self) ——> class A(object):中的print("A init")
——> class B(A):中的print("B init") ——> class C(B):中的print("C init")
程序结束。
使用super函数调用父类__init__函数:
class A(object):
def __init__(self):
print("A init")
class B(A):
def __init__(self):
super(B, self).__init__()
print("B init")
class C(B):
def __init__(self):
super(C, self).__init__()
print("C init")
c = C()
结果:
A init
B init
C init
运行过程:
程序开始:
c = C()
super(C, self).__init__()
super(B, self).__init__()
print("A init")
print("B init")
print("C init")
程序结束
简单的多继承
使用普通方法调用父类构造函数
class A(object):
def __init__(self):
print("A init")
class B(A):
def __init__(self):
A.__init__(self)
print("B init")
class C(A):
def __init__(self):
A.__init__(self)
print("C init")
class D(B, C):
def __init__(self):
B.__init__(self)
C.__init__(self)
print("D init")
d = D()
运行结果:
A init
B init
A init
C init
D init
运行过程:
程序开始:
d = D()
B.__init__(self)
class B(A):的A.__init__(self)
print("A init")
print("B init")
C.__init__(self)
class C(A):的print("A init")
print("C init")
print("D init")
程序结束
使用super调用父类构造函数
class A(object):
def __init__(self):
print("A init")
class B(A):
def __init__(self):
super(B, self).__init__()
print("B init")
class C(A):
def __init__(self):
super(C, self).__init__()
print("C init")
class D(B, C):
def __init__(self):
super(D, self).__init__()
print("D init")
d = D()
运行结果:
A init
C init
B init
D init
运行过程:
d = D()
super(D, self).__init__()
super(B, self).__init__()
super(C, self).__init__()
print("A init")
print("C init")
print("B init")
print("D init")
运行结束。
此文章用于自己的一点记录。