Python中调用父类的同名方法
Python中对象方法的定义很怪异,第一个参数一般都命名为self(相当于其它语言的this),用于传递对象本身,而在调用的时候则不必显式传递,系统会自动传递。
举一个很常见的例子:
class A: def __init__(self): print("Enter A") print("Leave A")class B(A): def __init__(self): print("Enter B") super(B, self).__init__() 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, D): def __init__(self): print("Enter E") super(E, self).__init__() print("Leave E")E()
?
结果:
Enter E
Enter B
Enter C
Enter D
Enter A
Leave A
Leave D
Leave C
Leave B
Leave E
在super机制里可以保证公共父类仅被执行一次,至于执行的顺序,是按照mro进行的(E.__mro__)。
?
转自:http://hi.baidu.com/thinkinginlamp/blog/item/8905564e1f771c0eb3de05ec.html