今天我试图弄清楚__mro__
和 super 在 python 中是如何工作的,我发现了一些对我来说既有趣又奇怪的东西,因为我得到了一些我在阅读后并不理解的东西__mro__
。这是代码片段。
代码片段 1:
#!/usr/bin/pyhon
class A(object):
def test(self):
return 'A'
class B(A):
def test(self):
return 'B to %s' % super(B, self).test()
class C(A):
def test(self):
return 'C'
class D(B, C):
pass
print D().test()
输出 :
B to C
代码片段 2:当我在 B 类中更新我的超级时:
#!/usr/bin/pyhon
class A(object):
def test(self):
return 'A'
class B(A):
def test(self):
return 'B to %s' % super(C, self).test()
class C(A):
def test(self):
return 'C'
class D(B, C):
pass
print D().test()
输出:
B to A
然后现在我得到了我之前的期望。有人可以解释一下 mro 如何与 super 一起工作吗?