class A(object):
def __init__(self):
print ("enter A")
print ("leave A")
class B(object):
def __init__(self):
print ("enter B")
print ("leave B")
class C(A):
def __init__(self):
print ("enter C")
super(C, self).__init__()
print ("leave C")
class D(A):
def __init__(self):
print ("enter D")
super(D, self).__init__()
print ("leave D")
class E(B, C):
def __init__(self):
print ("enter E")
B.__init__(self)
C.__init__(self)
print ("leave E")
class F(E, D):
def __init__(self):
print ("enter F")
E.__init__(self)
D.__init__(self)
print ("leave F")
F()
》》》输出
enter F
enter E
enter B
leave B
enter C
enter D
enter A
leave A
leave D
leave C
leave E
enter D
enter A
leave A
leave D
leave F
原因:super对象在搜索命名空间时,其实是基于类实例的mro进行。 本次运算:F E B C D A object
这篇文章讲的很详细,想具体了解可以去看:http://www.jb51.net/article/66912.htm