super真的是调用父类吗?
发布时间:2020-12-14 03:23:35 所属栏目:大数据 来源:网络整理
导读:# !/usr/bin/env python # -*- coding:utf-8 -*- # author:love_cat class A: def __init__ (self): print ( " A " ) class B(A): def __init__ (self): print ( " B " ) super(B,self). __init__ () class C(A): def __init__ (self): print ( " C " ) supe
#!/usr/bin/env python # -*- coding:utf-8 -*- # author:love_cat class A: def __init__(self): print("A") class B(A): def __init__(self): print("B") super(B,self).__init__() class C(A): def __init__(self): print("C") super(C,self).__init__() class D(B,C): def __init__(self): print("D") super(D,self).__init__() d = D() # 那么会打印什么结果 # 我们可能会想到,d = D(),首先会打印D,再执行父类的init方法,然后打印B,然后打印A # 所以运行结果应该是依次打印,D,B,A # 然而运行结果是 ‘‘‘ D B C A ‘‘‘ # 为什么会是这样,首先说super调用父类其实不太准确,super调用是基于mro线性查找 print(D.__mro__) ‘‘‘ <class ‘__main__.D‘>,<class ‘__main__.B‘>,<class ‘__main__.C‘>,<class ‘__main__.A‘>,<class ‘object‘>) ‘‘‘ # 所以会依次调用类D,C,A的构造方法 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |