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操作日期和时间的方法
Mar 11 Python
python获取从命令行输入数字的方法
Apr 29 Python
python创建关联数组(字典)的方法
May 04 Python
Python实现简单过滤文本段的方法
May 24 Python
Python基于tkinter模块实现的改名小工具示例
Jul 27 Python
python list转矩阵的实例讲解
Aug 04 Python
通过实例了解python property属性
Nov 01 Python
Python pandas库中的isnull()详解
Dec 26 Python
python-docx文件定位读取过程(尝试替换)
Feb 13 Python
python调用有道智云API实现文件批量翻译
Oct 10 Python
python 离散点图画法的实现
Apr 01 Python
Python如何快速找到多个字典中的公共键(key)
Apr 29 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
150kHz到30Mhz完全冲浪手册
2020/03/20 无线电
Zend Framework+smarty用法实例详解
2016/03/19 PHP
PHP实现获取毫秒时间戳的方法【使用microtime()函数】
2019/03/01 PHP
javascript编程起步(第七课)
2007/02/27 Javascript
Javascript 日期对象Date扩展方法
2009/05/30 Javascript
JS 修改URL参数(实现代码)
2013/07/08 Javascript
javascript中的遍历for in 以及with的用法
2014/12/22 Javascript
Node.js 学习笔记之简介、安装及配置
2015/03/03 Javascript
JavaScript判断用户是否对表单进行了修改的方法
2015/03/18 Javascript
JavaScript DOM元素尺寸和位置
2015/04/13 Javascript
原生js仿jquery animate动画效果
2016/07/13 Javascript
JS验证 只能输入小数点,数字,负数的实现方法
2016/10/07 Javascript
小发现之浅谈location.search与location.hash的问题
2017/06/23 Javascript
JavaScript原型链与继承操作实例总结
2018/08/24 Javascript
vue 基于element-ui 分页组件封装的实例代码
2018/12/10 Javascript
layui table 表格上添加日期控件的两种方法
2019/09/28 Javascript
[43:57]LGD vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
[01:52]2020年DOTA2 TI10夏季活动预告片
2020/07/15 DOTA
Python和Ruby中each循环引用变量问题(一个隐秘BUG?)
2014/06/04 Python
Python的Django框架中if标签的相关使用
2015/07/15 Python
Python中实现最小二乘法思路及实现代码
2018/01/04 Python
Python语言描述随机梯度下降法
2018/01/04 Python
python使用pandas处理excel文件转为csv文件的方法示例
2019/07/18 Python
python GUI库图形界面开发之PyQt5结合Qt Designer创建信号与槽的详细方法与实例
2020/03/08 Python
关于Theano和Tensorflow多GPU使用问题
2020/06/19 Python
python rsa-oaep加密的示例代码
2020/09/23 Python
如何使用Python调整图像大小
2020/09/26 Python
党员一句话承诺大全
2014/03/28 职场文书
世界文化遗产导游词
2015/02/13 职场文书
英文慰问信范文
2015/03/24 职场文书
退休教师追悼词
2015/06/23 职场文书
初中军训感言
2015/08/01 职场文书
党员学习型组织心得体会
2019/06/21 职场文书
导游词之澳门玫瑰圣母堂
2019/12/03 职场文书
详解JS ES6编码规范
2021/05/07 Javascript
tp5使用layui实现多个图片上传(带附件选择)的方法实例
2021/11/17 PHP