python类的继承实例详解


Posted in Python onMarch 30, 2017

python 类的继承

对于许多文章讲解python类的继承,大多数都是说一些什么oop,多态等概念,我认为这样可能对有一定基础的开发者帮助不是那么大,不如直接用在各种情况下所写的代码,来展示对于某一种代码情况,代码运行会有什么效果。这样可能对开发者的帮助更大。不说废话,直接上代码。

这里不区分经典类和新式类,下面分析的对新式类和经典类都适用

对于类中的__init__函数,只是一个初始化是调用的一个函数(ps:初始化和创建实例并不是一个过程,实例的创建是通过一个create函数来完成的),如果在子类中没有显示的声明__init__函数,则子类就会调用父类的__init__函数,但是不会再调用父类的父类中的__init__函数,如果显示的声明了__init__ 函数,则在子类的初始化的时候就不会调用父类的初始化函数,只会调用子类中声明的__init__函数, 同时在子类实例中也不会有父类__init__函数中声明的属性,

例子:

class animal():
 name="hh"
 sex="man"
 def __init__(self):
  self.height=10
  self.weight=50
 def deception(self):
  print "ansible.height:"+self.height+" animal.weight:"+self.weight
 def run(self):
  print "animal is running...."
class dog(animal):
 def __init__(self):
  pass
if __name__=="__main__":
 dg=dog()
 print dg.__dict__

此时运行的结果为

{}

当把dog类修改为如下时(ps:此时没有显示的声明__init__方法):

class dog(animal):
 def run(self):
  print "dog is running..."

此时由于直接调用的父类animal的__init__方法,结果如下:

{'weight': 50, 'height': 10}

如果此时有一个类继承dog类,此时会出现什么情况呢?(python解释器先在子类中寻找__init__方法,如果没有找到,再从父类中找,直到找到为止,并运行,并且不再运行父类的父类的__init__方法,此时没有运行的__init__方法中的创建的属性是没有的,例如上面的例子,第一次运行时得到的例子中并没有weight和height属性)

class animal():
 name="hh"
 sex=""
 def __init__(self):
  self.height=10
  self.weight=50
 def deception(self):
  print "ansible.height:"+self.height+" animal.weight:"+self.weight
 def run(self):
  print "animal is running...."
class dog(animal):
 def __init__(self):
  pass
 def run(self):
  print "dog is running..."
class jinmao(dog):
 # def __init__(self):
 #  self.ji="jinmao"
 pass
if __name__=="__main__":
 dg=jinmao()
 print dg.__dict__

此时的结果一样是

{}

在类的多继承中会产生什么状况呢?(在多继承中会运行类的继承参数中的第一个参数声明的父类中的__init__函数,如果父类中没有__init__函数,继续寻找父类的父类中有没有,以此类推。。。如果找到了头还是没有,则换为第二个参数声明的父类,过程如第一个参数,知道找到__init__函数为止,如果都没有找到,则不初始化),代码可以根据前面例子自己测试。

对于在子类中调用父类中的方法的super的使用与特性。

总结:如果想了解python虚拟机具体是怎么创建类的(具体到当加载一个.pyc文件时,是怎么通过c语言的代码逻辑来把类对象放到一块内存中的,我也在了解这方面的内容,希望咱们一块探索)

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Python 相关文章推荐
Python isinstance判断对象类型
Sep 06 Python
Python实现的HTTP并发测试完整示例
Apr 23 Python
Python入门之三角函数tan()函数实例详解
Nov 08 Python
Python回文字符串及回文数字判定功能示例
Mar 20 Python
DataFrame中去除指定列为空的行方法
Apr 08 Python
Python离线安装PIL 模块的方法
Jan 08 Python
详解重置Django migration的常见方式
Feb 15 Python
使用PyCharm进行远程开发和调试的实现
Nov 04 Python
Python如何基于rsa模块实现非对称加密与解密
Jan 03 Python
VSCode配合pipenv搞定虚拟环境的实现方法
May 17 Python
python pyg2plot的原理知识点总结
Feb 28 Python
k-means & DBSCAN 总结
Apr 27 Python
django轻松使用富文本编辑器CKEditor的方法
Mar 30 #Python
python下读取公私钥做加解密实例详解
Mar 29 #Python
django开发之settings.py中变量的全局引用详解
Mar 29 #Python
深入理解Python3中的http.client模块
Mar 29 #Python
Python 中迭代器与生成器实例详解
Mar 29 #Python
Python利用Beautiful Soup模块搜索内容详解
Mar 29 #Python
windows系统下Python环境搭建教程
Mar 28 #Python
You might like
php set_time_limit()函数的使用详解
2013/06/05 PHP
php实现给图片加灰色半透明效果的方法
2014/10/20 PHP
PHP使用星号替代用户名手机和邮箱的实现代码
2018/02/07 PHP
tp5框架的增删改查操作示例
2019/10/31 PHP
Nigma vs Alliance BO5 第五场2.14
2021/03/10 DOTA
理解JavaScript中的事件
2006/09/23 Javascript
JavaScript arguments 多参传值函数
2010/10/24 Javascript
jQuery EasyUI API 中文文档 - TimeSpinner时间微调器
2011/10/23 Javascript
JS自动适应的图片弹窗实例
2013/06/29 Javascript
使用CSS和jQuery模拟select并附提交后取得数据的代码
2013/10/18 Javascript
jQuery绑定自定义事件的魔法升级版
2016/06/30 Javascript
vue.js学习笔记之绑定style样式和class列表
2016/10/31 Javascript
浅谈js数组和splice的用法
2016/12/04 Javascript
微信小程序 picker 组件详解及简单实例
2017/01/10 Javascript
js实现点击切换checkbox背景图片的简单实例
2017/05/08 Javascript
javascript实现Java中的Map对象功能的实例详解
2017/08/21 Javascript
详解webpack + react + react-router 如何实现懒加载
2017/11/20 Javascript
vue.js内置组件之keep-alive组件使用
2018/07/10 Javascript
JavaScript创建、读取和删除cookie
2019/09/03 Javascript
vue使用canvas实现移动端手写签名
2020/09/22 Javascript
详解JavaScript类型判断的四种方法
2020/10/21 Javascript
JS模拟实现京东快递单号查询
2020/11/30 Javascript
Python中用pycurl监控http响应时间脚本分享
2015/02/02 Python
Python3.6 Schedule模块定时任务(实例讲解)
2017/11/09 Python
pandas.read_csv参数详解(小结)
2019/06/21 Python
python使用openCV遍历文件夹里所有视频文件并保存成图片
2020/01/14 Python
python实现xml转json文件的示例代码
2020/12/30 Python
澳大利亚制造的羊皮靴:Original UGG Boots
2017/11/13 全球购物
社区安全检查制度
2014/02/03 职场文书
个人担保书范文
2014/05/20 职场文书
标准版离职证明书
2014/09/12 职场文书
2014副镇长民主生活会个人对照检查材料思想汇报
2014/09/30 职场文书
开展党的群众路线教育实践活动工作总结
2014/11/05 职场文书
计算机考试作弊检讨书1000字
2015/01/01 职场文书
七年级上册语文教学计划
2015/01/22 职场文书
css3 利用transform-origin 实现圆点分布在大圆上布局及旋转特效
2021/04/29 HTML / CSS