gpt4 book ai didi

Python super 使用示例

转载 作者:行者123 更新时间:2023-11-28 20:46:24 24 4
gpt4 key购买 nike

super 的 Python 文档说:返回一个代理对象,该对象将方法调用委托(delegate)给类型的父类或兄弟类

super(type[, object-or-type])

http://docs.python.org/2/library/functions.html#super

谁能给我一个 super 的例子,其中方法调用被委托(delegate)给类型的兄弟类?

最佳答案

当使用三角形继承模式时:

>>> 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>

这里 super(A, self).__init__()A.__init__() 内部调用了 B.__init__(),一个兄弟类。

super() 查看 self 上的 MRO(方法解析顺序)中的类,找到第一个参数所在的顺序,并返回请求的之后下一节课的方法。对于 C,MRO 是:

>>> C.__mro__
(<class '__main__.C'>, <class '__main__.A'>, <class '__main__.B'>, <type 'object'>)

所以 super(A, self)Bobject 上寻找方法。

关于Python super 使用示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20864897/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com