相关代码 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 算法采用广度优先搜索。在这里是怎么调用的?
谢谢各位大佬
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.