小编Ish*_*ori的帖子

Python方法解析顺序

有人可以解释给定代码的输出以及在这种情况下 python MRO 是如何工作的吗?

class A(object):
    def go(self):
        print("go A go!")


class B(A):
    def go(self):
        super(B, self).go()
        print("go B go!")


class C(A):
    def go(self):
        super(C, self).go()
        print("go C go!")


class D(C, B):
    def go(self):
        super(D, self).go()
        print("go D go!")


d = D()
d.go()

Run Code Online (Sandbox Code Playgroud)

输出:

go A go!
go B go!
go C go!
go D go!
Run Code Online (Sandbox Code Playgroud)

按照从左到右和深度,我会说它应该是:

go A go!
go C go!
go D go!
Run Code Online (Sandbox Code Playgroud)

但似乎它不像我想的那样工作。

python oop inheritance multiple-inheritance method-resolution-order

4
推荐指数
1
解决办法
119
查看次数