位置: 编程技术 - 正文

总结python实现父类调用两种方法的不同(python 父类方法)

编辑:rootadmin

推荐整理分享总结python实现父类调用两种方法的不同(python 父类方法),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:python父类,python 调用父类,python如何调用父类方法,python调用父类构造函数,python怎么调用父类方法,python父亲节,python父亲节,python怎么调用父类方法,内容如对您有帮助,希望把文章链接给更多的朋友!

python中有两种方法可以调用父类的方法:

super(Child, self).method(args)

Parent.method(self, args)

我用其中的一种报了如下错误:

找不到 classobj。当我把调用改为 super(B, self).f(name) 就能正确运行,且结果正确。

分析错误

因为基类没有继承 object , 在python中,一个可以这样创建:

总结python实现父类调用两种方法的不同(python 父类方法)

也可以这样创建:

这两者的区别就是:

这是老式类(前者)和新式类(后者)的区别。区别可以参考: 与 super(Child, self).__init__() 的区别是什么?

super 理解成父类也是理所当然,python里其实指的是 MRO 中的下一个类!

super其实干了这件事,看这个答案:

MRO 全称 Method Resolution Order,它代表了类继承的顺序。

super 是用来解决多重继承问题的,假设B C D 都是直接继承class A

如果E类的构造函数使用 super(E, self).__init__() 时,A类的构造函数会被执行一次,而用另一种方法,A类的构造函数会被执行多次。

在 MRO 中,基类永远出现在派生类后面,如果有多个基类,基类的相对顺序保持不变。

总结

个人觉得,复杂的继承结构是设计中不良的设计,当继承结构清晰后,两个方法其实就没什么区别了。

本文链接地址:https://www.jiuchutong.com/biancheng/381398.html 转载请保留说明!

上一篇:利用python程序帮大家清理windows垃圾(如何用python编写一个程序)

下一篇:python 根据pid杀死相应进程的方法(python如何用pi)

免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

鄂ICP备2023003026号

网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

友情链接: 武汉网站建设 电脑维修 湖南楚通运网络