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 相关文章推荐
以911新闻为例演示Python实现数据可视化的教程
Apr 23 Python
详解Python Socket网络编程
Jan 05 Python
Python缩进和冒号详解
Jun 01 Python
基于python的字节编译详解
Sep 20 Python
Scrapy框架CrawlSpiders的介绍以及使用详解
Nov 29 Python
Python中xrange与yield的用法实例分析
Dec 26 Python
python中yaml配置文件模块的使用详解
Apr 27 Python
Python 查找字符在字符串中的位置实例
May 02 Python
基于DataFrame改变列类型的方法
Jul 25 Python
pytorch训练imagenet分类的方法
Jul 27 Python
Python如何实现感知器的逻辑电路
Dec 25 Python
python爬虫请求库httpx和parsel解析库的使用测评
May 10 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&mysql(三)
2006/10/09 PHP
tp5 实现列表数据根据状态排序
2019/10/18 PHP
JavaScript 撑出页面文字换行
2009/06/15 Javascript
JavaScript DOM 学习第五章 表单简介
2010/02/19 Javascript
基于Jquery的简单图片切换效果
2011/01/06 Javascript
js鼠标点击事件在各个浏览器中的写法及Event对象属性介绍
2013/01/24 Javascript
JS批量操作CSS属性详细解析
2013/12/16 Javascript
特殊情况下如何获取span里面的值
2014/05/20 Javascript
如何书写高质量jQuery代码(使用jquery性能问题)
2014/06/30 Javascript
jQuery实现友好的轮播图片特效
2015/01/12 Javascript
kindeditor修复会替换script内容的问题
2015/04/03 Javascript
详解JavaScript的Date对象(制作简易钟表)
2020/04/07 Javascript
浅谈JQuery+ajax+jsonp 跨域访问
2016/06/25 Javascript
Bootstrap框架结合jQuery仿百度换肤功能实例解析
2016/09/17 Javascript
jquery的父、子、兄弟节点查找,节点的子节点循环方法
2016/12/07 Javascript
微信小程序 http请求的session管理
2017/06/07 Javascript
vue轮播图插件vue-awesome-swiper的使用代码实例
2017/07/10 Javascript
js图片上传的封装代码
2017/08/01 Javascript
浅谈webpack组织模块的原理
2018/03/10 Javascript
angularJS开发注意事项
2018/05/26 Javascript
vue底部加载更多的实例代码
2018/06/29 Javascript
Vue组件模板的几种书写形式(3种)
2020/02/19 Javascript
[53:13]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS LGD-GAMING
2014/05/22 DOTA
Python中内置的日志模块logging用法详解
2016/07/12 Python
批量获取及验证HTTP代理的Python脚本
2017/04/23 Python
使用Flask-Cache缓存实现给Flask提速的方法详解
2019/06/11 Python
python区分不同数据类型的方法
2019/10/14 Python
详解pyinstaller selenium python3 chrome打包问题
2019/10/18 Python
python实现两个字典合并,两个list合并
2019/12/02 Python
python+tifffile之tiff文件读写方式
2020/01/13 Python
Python3爬虫中识别图形验证码的实例讲解
2020/07/30 Python
python动态规划算法实例详解
2020/11/22 Python
CSS3 text shadow字体阴影效果
2016/01/08 HTML / CSS
html5中canvas图表实现柱状图的示例
2017/11/13 HTML / CSS
六一儿童节致辞稿(3篇)
2019/07/11 职场文书
Python实现Telnet自动连接检测密码的示例
2021/04/16 Python