关于Python的super用法研究
2011-08-21 20:53
627 查看
关于Python的super用法研究
XJY 于 April 8th, 2011 Posted inPython
Python中对象方法的定义很怪异,第一个参数一般都命名为self(相当于其它语言的this),用于传递对象本身,而在调用的时候则不必显式传递,系统会自动传递。
举一个很常见的例子:
>>> class Foo: def bar(self, message): print(message) >>> Foo().bar("Hello, World.") Hello, World. |
>>> class FooParent: def bar(self, message): print(message) >>> class FooChild(FooParent): def bar(self, message): FooParent.bar(self, message) >>> FooChild().bar("Hello, World.") Hello, World. |
>>> class FooParent: def bar(self, message): print(message) >>> class FooChild(FooParent): def bar(self, message): super(FooChild, self).bar(message) >>> FooChild().bar("Hello, World.") Hello, World. |
代码一:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | class A: def __init__(self): print("Enter A") print("Leave A") class B(A): def __init__(self): print("Enter B") A.__init__(self) print("Leave B") class C(A): def __init__(self): print("Enter C") A.__init__(self) print("Leave C") class D(A): def __init__(self): print("Enter D") A.__init__(self) print("Leave D") class E(B, C, D): def __init__(self): print("Enter E") B.__init__(self) C.__init__(self) D.__init__(self) print("Leave E") E() |
Enter E Enter B Enter A Leave A Leave B Enter C Enter A Leave A Leave C Enter D Enter A Leave A Leave D Leave E |
代码二:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | 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 |
相关文章推荐
- 关于Python的super用法研究(转)
- 关于Python的super用法研究(转)
- 关于Python的super用法研究
- 关于Python的super用法研究
- 关于Python的super用法研究[转]
- 关于Python的super用法研究
- 关于Python的super用法研究
- 关于Python的super用法研究
- 关于Python的super()用法的研究
- 关于Python的super用法研究
- 关于Python的super用法研究
- 关于Python的super用法研究
- 关于Python的super用法研究(zt)
- 关于Python的super用法研究
- 关于Python的super用法研究
- 关于Python的super用法研究
- 关于Python的super用法研究
- 关于Python里的super用法研究
- 关于Python的super用法研究
- 关于Python的super用法研究