howhy

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\'>)

 

分类:

技术点:

相关文章:

  • 2022-12-23
  • 2021-11-14
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-12
  • 2022-12-23
  • 2022-02-07
猜你喜欢
  • 2022-01-12
  • 2022-12-23
  • 2022-12-23
  • 2021-06-25
  • 2022-12-23
  • 2021-04-05
  • 2021-08-17
相关资源
相似解决方案