我看你之前好像还发过关于这个知识点的帖子。
我再说一些我从其他地方看到的以及一些个人的理解,不一定都正确哈。
多重继承的时候还可以不按照__mro__的顺序执行,可以跳过某个或者某几个去执行。这就是super().__init__()函数的参数设置了。
super().__init__()函数本来是有参数的,长这个样子的,super(类名,self).__init__()函数
根据__mro__列表,若打算跳过哪一个类去执行,super的参数就写哪一个类。
你可以尝试一下我写的这个小程序,修改一下super的参数,或者修改一下不同类中的super。看看会有什么结果。
你的这个继承有点简单,来个复杂一点的。
class A():
def __init__(self):
print("进入A…")
print("离开A…")
class G():
def __init__(self):
print("进入G…")
print("离开G…")
class B(A):
def __init__(self):
print("进入B…")
super().__init__()
print("离开B…")
class C(A):
def __init__(self):
print("进入C…")
#super().__init__()
print("离开C…")
class D(B, C):
def __init__(self):
print("进入D…")
#super().__init__()
super(A,self).__init__()
print("离开D…")
class E(G):
def __init__(self):
print("进入E…")
#super().__init__()
super(C,self).__init__()
print("离开E…")
class F(E,D):
def __init__(self):
print("进入F…")
super().__init__()
#super(G,self).__init__()
print("离开F…")
print(F.__mro__)
d = F()
|