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编程-将Python程序转化为可执行程序[整理]
Apr 09 Python
利用Python读取文件的四种不同方法比对
May 18 Python
numpy.linspace 生成等差数组的方法
Jul 02 Python
Python中利用LSTM模型进行时间序列预测分析的实现
Jul 26 Python
python 生成器和迭代器的原理解析
Oct 12 Python
Python 词典(Dict) 加载与保存示例
Dec 06 Python
python GUI库图形界面开发之PyQt5拖放控件实例详解
Feb 25 Python
python实现贪吃蛇双人大战
Apr 18 Python
Python 如何在字符串中插入变量
Aug 01 Python
Python基于callable函数检测对象是否可被调用
Oct 16 Python
Python爬虫中Selenium实现文件上传
Dec 04 Python
Python实现简单的俄罗斯方块游戏
Sep 25 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 生成签名及验证签名详解
2016/10/26 PHP
php微信公众号开发(2)百度BAE搭建和数据库使用
2016/12/15 PHP
PHP实现删除多重数组对象属性并重新赋值的方法
2017/06/07 PHP
windows 2008r2+php5.6.28环境搭建详细过程
2019/06/18 PHP
jquery URL参数判断,确定菜单样式
2010/05/31 Javascript
Javascript面向对象编程(二) 构造函数的继承
2011/08/28 Javascript
jquery按回车提交数据的代码示例
2013/11/05 Javascript
JavaScript给input的value赋值引发的关于基本类型值和引用类型值问题
2015/12/07 Javascript
jQuery设置聚焦并使光标位置在文字最后的实现方法
2016/08/02 Javascript
AngularJS  $modal弹出框实例代码
2016/08/24 Javascript
bootstrap配合Masonry插件实现瀑布式布局
2017/01/18 Javascript
Javascript for in的缺陷总结
2017/02/03 Javascript
关于前后端json数据的发送与接收详解
2017/07/30 Javascript
微信小程序实现图片懒加载的示例代码
2017/12/13 Javascript
JavaScript模块详解
2017/12/18 Javascript
Vue 父子组件的数据传递、修改和更新方法
2018/03/01 Javascript
angular中两种表单的区别(响应式和模板驱动表单)
2018/12/06 Javascript
js键盘事件实现人物的行走
2020/01/17 Javascript
antd 表格列宽自适应方法以及错误处理操作
2020/10/27 Javascript
[05:53]敌法师的金色冠名ID"BurNIng",是传说,是荣耀
2020/07/11 DOTA
Python3+django2.0+apache2+ubuntu14部署网站上线的方法
2018/07/07 Python
Python爬虫常用小技巧之设置代理IP
2018/09/13 Python
python redis连接 有序集合去重的代码
2019/08/04 Python
python dict乱码如何解决
2020/06/07 Python
CSS3教程(10):CSS3 HSL声明设置颜色
2009/04/02 HTML / CSS
使用CSS实现弹性视频html5案例实践
2012/12/26 HTML / CSS
.NET面试10题
2014/02/24 面试题
铭立家具面试题
2012/12/06 面试题
Vector, ArrayList, HashTable, HashMap哪些是线程安全的,哪些不是
2015/10/12 面试题
教师考核评语
2014/04/28 职场文书
服务行业口号
2014/06/11 职场文书
2014年音乐教师工作总结
2014/12/03 职场文书
长江七号观后感
2015/06/11 职场文书
法制工作总结2015
2015/07/23 职场文书
受欢迎的自荐信,就这么写!
2019/04/19 职场文书
读《瓦尔登湖》有感:每个人都需要一个瓦尔登湖
2019/10/17 职场文书