账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    关于Python的多继承问题,为什么结果差异很大
    35
    0

    相关代码1:

    class A(object):
        def show(self):
            print ('init A...')
    
    class B(A):
        def show(self):
            super(B, self).show()
            print('init B...')
    class C(A):
        def show(self):
            # super(C, self).show()
            print('init C...')
    
    class D(B, C):
        def show(self):
            super(D, self).show()
            print('init D...')
    d = D()
    d.show()

    输出的结果是:

    init C...
    init B...
    init D...

    这里想问的是为什么没有经过A,输出init A...

    相关代码2:

    class A(object):
        def show(self):
            print ('init A...')
    
    class B(A):
        def show(self):
            super(B, self).show()
            print('init B...')
    class C(A):
        def show(self):
            # super(C, self).show()
            print('init C...')
    
    class D(C, B):    #继承类和代码1中的顺序相反
        def show(self):
            super(D, self).show()
            print('init D...')
    d = D()
    d.show()

    输出的结果是:

    init C...
    init D...

    这里想问的是为什么B中的方法没有被调用?
    还有的就是新式类的MRO算法采用广度优先搜索。在这里是怎么调用的?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部