• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >python > 总结python实现父类调用两种方法的不同

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

作者: 字体:[增加 减小] 来源:互联网

通过本文主要向大家介绍了python 调用父类方法,python父类,python 父类 init,子类调用父类方法,java子类调用父类方法等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

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

super(Child, self).method(args)

 Parent.method(self, args)

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

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

分析错误

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

class A:
 pass
</div>

也可以这样创建:

class A(object):
 pass
</div>

这两者的区别就是:

这是老式类(前者)和新式类(后者)的区别。区别可以参考:https://docs.python.org/release/2.5.2/ref/node33.html

python3已经把旧类型去掉了,也就是说已经隐式继承了object,所以,python3中写不写继承object都是没有区别的

两种调用的区别

Parent.__init__(self) 与 super(Child, self).__init__() 的区别是什么?

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

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

def super(cls, inst):
 mro = inst.__class__.mro() # Always the most derived class
 return mro[mro.index(cls) + 1]
</div>

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

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

class E(B, C, D):
 def __init__(self):
  # code...
</div>

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

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

总结

个人觉得,复杂的继承结构是设计中不良的设计,当继承结构清晰后,两个方法其实就没什么区别了。以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助。

</div>

您可能想查找下面的文章:

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

相关文章

  • Windows下Python的Django框架环境部署及应用编写入门
  • python实现的一个火车票转让信息采集器
  • python如何在终端里面显示一张图片
  • Python ORM框架SQLAlchemy学习笔记之关系映射实例
  • python开发简易版在线音乐播放器
  • 详解JavaScript编程中的window与window.screen对象
  • pymongo为mongodb数据库添加索引的方法
  • python插入排序算法实例分析
  • 用Python实现协同过滤的教程
  • 详解Python中的array数组模块相关使用

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • 在Python的Flask中使用WTForms表单框架的基础教程
    • 使用Python进行新浪微博的mid和url互相转换实例(10进制和62进制互算)
    • 详解Python中的array数组模块相关使用
    • Python遍历目录并批量更换文件名和目录名的方法
    • Python删除windows垃圾文件的方法
    • 简洁的十分钟Python入门教程
    • python各种语言间时间的转化实现代码
    • 在Python的Django框架的视图中使用Session的方法
    • Python 实现文件的全备份和差异备份详解
    • Python中exit、return、sys.exit()等使用实例和区别

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有