python子类调用父类构造函数的方法疑问?
如图中所示,在E中调用父类B的构造函数,为何会运行C的构造函数,输出“C”,求指教。使用的是 父类.__init__(self)的方法。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
如图中所示,在E中调用父类B的构造函数,为何会运行C的构造函数,输出“C”,求指教。使用的是 父类.__init__(self)的方法。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(1)
见
super()
文档:super
并不只会指向父类,还可能指向继承关系上的“兄弟类”。每个对象(或者类)有自己的 method resolution order(mro) 。
super
会顺着对象的 mro 往下找,而不是找父类。类 E 的 mro 是 E -> B -> C -> A -> object 。
所以在 E 的对象 e 的 B 基类类调用
super
,会从C
开始找下去,于是调用了C.__init__
。但是 C 基类里的 super 会从
A
找下去,于是不会调用B.__init__
。