python super 使用
class A(object):
? def __init__(self):
? ? ? ?print "enter A"
? ? ? ?super(A, self).__init__() ?# new
? ? ? ?print "leave A"
?
class B(object):
? ?def __init__(self):
? ? ? ?print "enter B"
? ? ? ?super(B, self).__init__() ?# new
? ? ? ?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"
? ? ? ?super(E, self).__init__() ?# change
? ? ? ?print "leave E"
?
class F(E, D):
? ?def __init__(self):
? ? ? ?print "enter F"
? ? ? ?super(F, self).__init__() ?# change
? ? ? ?print "leave F"
?
?
f = F()
?
?
输出:
enter F
enter E
enter B
enter C
enter D
enter A
leave A
leave D
leave C
leave B
leave E
leave F
?
?
?
?
查看类F的继承顺序
>>> F.__mro__
(<class '__main__.F'>,
?<class '__main__.E'>,
?<class '__main__.B'>,
?<class '__main__.C'>,
?<class '__main__.D'>,
?<class '__main__.A'>,
?<type 'object'>)
?