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 with的用法
Aug 22 Python
python实现多线程网页下载器
Apr 15 Python
PHP实现发送和接收JSON请求
Jun 07 Python
浅谈python在提示符下使用open打开文件失败的原因及解决方法
Nov 30 Python
一步步教你用python的scrapy编写一个爬虫
Apr 17 Python
python 处理微信对账单数据的实例代码
Jul 19 Python
Django项目创建到启动详解(最全最详细)
Sep 07 Python
Python编写打字训练小程序
Sep 26 Python
numpy中三维数组中加入元素后的位置详解
Nov 28 Python
python初步实现word2vec操作
Jun 09 Python
详解Windows下PyCharm安装Numpy包及无法安装问题解决方案
Jun 18 Python
python rsa-oaep加密的示例代码
Sep 23 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
PHILIPS AE3805收音机的分析打磨
2021/03/02 无线电
留言板翻页的实现详解
2006/10/09 PHP
php中$this->含义分析
2009/11/29 PHP
php将html转成wml的WAP标记语言实例
2015/07/08 PHP
php实现微信支付之现金红包
2018/05/30 PHP
javascript实现上传图片前的预览(TX的面试题)
2007/08/20 Javascript
juqery 学习之三 选择器 简单 内容
2010/11/25 Javascript
js中更短的 Array 类型转换
2011/10/30 Javascript
一行代码告别document.getElementById
2012/06/01 Javascript
jquery zTree异步加载简单实例分享
2013/02/05 Javascript
JS实现很酷的EMAIL地址添加功能实例
2015/02/28 Javascript
js实现短信发送倒计时功能(正则验证)
2017/02/10 Javascript
微信小程序教程系列之新建页面(4)
2017/04/17 Javascript
前端主流框架vue学习笔记第二篇
2017/07/26 Javascript
vue props传值失败 输出undefined的解决方法
2018/09/11 Javascript
在vue中使用v-bind:class的选项卡方法
2018/09/27 Javascript
JavaScript面向对象编程小游戏---贪吃蛇代码实例
2019/05/15 Javascript
python实现数通设备tftp备份配置文件示例
2014/04/02 Python
利用Python进行数据可视化常见的9种方法!超实用!
2018/07/11 Python
Django使用redis缓存服务器的实现代码示例
2019/04/28 Python
Python数据类型之Set集合实例详解
2019/05/07 Python
Python while循环使用else语句代码实例
2020/02/07 Python
TensorFlow-gpu和opencv安装详细教程
2020/06/30 Python
使用Nibabel库对nii格式图像的读写操作
2020/07/01 Python
python编程的核心知识点总结
2021/02/08 Python
详解python日志输出使用配置文件格式
2021/02/10 Python
python抢购软件/插件/脚本附完整源码
2021/03/04 Python
英国殿堂级有机护肤品牌:Rodial
2017/04/17 全球购物
雅诗兰黛香港官网:Estee Lauder香港
2017/09/26 全球购物
Gretna Green中文官网:苏格兰格林小镇
2019/10/16 全球购物
群众路线个人自我剖析材料
2014/10/07 职场文书
小学推普周活动总结
2015/05/07 职场文书
2015年机关党委工作总结
2015/05/23 职场文书
一文帮你理解PReact10.5.13源码
2021/04/03 Javascript
JDBC连接的六步实例代码(与mysql连接)
2021/05/12 MySQL
python爬取某网站原图作为壁纸
2021/06/02 Python