用于超级说法的Python文档:返回一个代理对象,该方法将方法调用委托给父类或兄弟类类型
super(type[, object-or-type])
http://docs.python.org/2/library/functions.html#super
有人能给我一个super示例,其中方法调用被委托给类型的兄弟类?
使用三角形继承模式时:
>>> class A(object):
... def __init__(self):
... print 'A.__init__()'
... super(A, self).__init__()
...
>>> class B(object):
... def __init__(self):
... print 'B.__init__()'
... super(B, self).__init__()
...
>>> class C(A, B):
... def __init__(self):
... print 'C.__init__()'
... super(C, self).__init__()
...
>>> C()
C.__init__()
A.__init__()
B.__init__()
<__main__.C object at 0x10f27e190>
Run Code Online (Sandbox Code Playgroud)
这super(A, self).__init__()里面A.__init__()叫B.__init__(),兄弟姐妹类.
super()查看MRO中的类(方法解析顺序)on self,找到第一个参数在该顺序中的位置,然后在下一个类之后返回所请求的方法.因为C,MRO是:
>>> C.__mro__
(<class '__main__.C'>, <class '__main__.A'>, <class '__main__.B'>, <type 'object'>)
Run Code Online (Sandbox Code Playgroud)
因此super(A, self)寻找对方法B和object.
| 归档时间: |
|
| 查看次数: |
363 次 |
| 最近记录: |