- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我试图了解 super 在 python 中的工作原理并尝试了以下示例:
class A(object):
def __init__(self):
print "in A's init"
class B(object):
def __init__(self):
print "in B's init"
class C(A,B):
def __init__(self):
super(C,self).__init__()
print "In C"
if __name__=="__main__":
c=C()
相当简单..我尝试了以下 super 调用(在此处显示结果):
>>> super(B,c).__init__()
>>> super(B,c).__init__()
>>> super(A,c).__init__()
in B's init
>>> super(A,c).__init__()
in B's init
>>> super(A,c).__init__()
in B's init
>>> super(B,c).__init__()
>>> super(C,c).__init__()
in A's init
我不明白为什么 super(A,c).__init__()
打印出它在 B 的初始化中?
最佳答案
Python 的 super() 应该被称为“next-in-mro”,因为它不一定向上调用父级;相反,它可以调用 sibling 。
检查类结构的方法解析顺序很容易:
>>> C.__mro__
(<class '__main__.C'>, <class '__main__.A'>, <class '__main__.B'>, <type 'object'>)
你可以看到 B 是 A 之后的下一个类。
这种设计的原因是它让 super 调用链访问链中的每个类不超过一次。它支持一种称为“合作多重继承”的编程风格,这种风格有时非常有用。
这里有一些引用资料,包括指向 Dylan 的 next-method 的链接,该方法用作 Python 的 super() 的模型:
关于python - 在 python 中揭开 super 的神秘面纱?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24564908/
这个问题在这里已经有了答案: 关闭10 年前。 Possible Duplicate: Detailed Explanation of Variable Capture in Closures pu
我有一个包含多个 UITextView 的 View ,用户需要点击这些 View 才能开始编辑。但是,在这个 UIView 的横向 View 中,键盘覆盖了这些字段的一半以上。推荐的方法是什么以确保
我目前正在研究我正在开发的网站的用户身份验证协议(protocol)。我想创建一个身份验证 cookie,以便用户可以在页面之间保持登录状态。 这是我的第一个 bash: cookie = user_
在此链接中,您可以看到 Logo 的底部被页面下方的下一个 DIV 中的背景图像挡住了。我认为 z-index 应该控制它,但我很难过。 http://dansdemos.info/prototype
创建工作项(例如 Azure DevOps 中的 Bug)时,您将在“原因”字段的下拉列表中看到的值取决于您为“状态”字段选择的值。例如请参阅这些屏幕截图(模板敏捷,无自定义) 然后,如果您更改状态,
我是一名优秀的程序员,十分优秀!