0
点赞
收藏
分享

微信扫一扫

python 类继承属性查找方法

python2.3以后新式类继承属性查询算法为C3

class D():
pass
class B(D):
pass
class C(D):
pass
class A(B,C):
pass

print(A.__mro__)##(<class '__main__.A'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.D'>, <class 'object'>) A->B->C->D
class D():
pass
class E():
pass
class B(D):
pass
class C(E):
pass
class A(B,C):
pass

print(A.__mro__)##(<class '__main__.A'>, <class '__main__.B'>, <class '__main__.D'>, <class '__main__.C'>, <class '__main__.E'>, <class 'object'>) A->B->D->C->E

 

class A():
def __init__(self):
print("A")

class B(A):
def __init__(self):
print("B")
super().__init__()
class C(A):
def __init__(self):
print("C")
super().__init__()
class D(B,C):
def __init__(self):
print("D")
super(D,self).__init__()
if __name__=='__main__':
d=D()
print(D.__mro__)
##结果 super不一定是调用父类方法 也是按__mro__调用上个类的方法
D B C A (<class '__main__.D'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.A'>, <class 'object'>)

 


举报

相关推荐

0 条评论