举例讲解Python面向对象编程中类的继承


Posted in Python onJune 17, 2016

python创建一个类很简单只需要定义它就可以了.

class Cat:
  pass

就像这样就可以了,通过创建子类我们可以继承他的父类(超类)的方法。这里重新写一下cat

class Cat:
  name = 'cat'


class A(Cat):
  pass

print A.name  # cat

经典类

我们也可以这样,让A多继承。

class Cat:
  name = 'cat'


class Dog:
  name = 'dog'


class A(Cat, Dog):
  pass

print A.name  # cat

如果Cat类没有name属性呢?

class Cat:
  pass

  ...
print A.name  # dog

A就会在其他的父类中找name这个属性。如果继承的两个父类都是继承自Animal类而Animal类也有name属性呢?

class Animal:
  name = 'animal'


class Cat(Animal):
  pass


class Dog(Animal):
  name = 'dog'


class A(Cat, Dog):
  pass

print A.name  # animal

这样A就不会在Dog类中找而是会在Animal上找到name, 这种类叫经典类。类的解析顺序是一种从左到右深度优先的搜索。也就是A?> Cat?> Animal ?> Dog。

新式类

python还有一种创建类的方式,就是使用新式类(建议使用), 都继承自object这个基类, 新式类的搜索规则是从左到右逐级查询。也就是A?> Cat ?> Dog ?> Animal。

class Cat(object):
  pass
Python 相关文章推荐
跟老齐学Python之一个免费的实验室
Sep 14 Python
python执行子进程实现进程间通信的方法
Jun 02 Python
利用Python3分析sitemap.xml并抓取导出全站链接详解
Jul 04 Python
Django模板变量如何传递给外部js调用的方法小结
Jul 24 Python
python中format()函数的简单使用教程
Mar 14 Python
Python实现判断并移除列表指定位置元素的方法
Apr 13 Python
对python:print打印时加u的含义详解
Dec 15 Python
Python如何获得百度统计API的数据并发送邮件示例代码
Jan 27 Python
用pyqt5 给按钮设置图标和css样式的方法
Jun 24 Python
pygame库实现移动底座弹球小游戏
Apr 14 Python
基于TensorFlow常量、序列以及随机值生成实例
Jan 04 Python
浅析Python 抽象工厂模式的优缺点
Jul 13 Python
浅谈python为什么不需要三目运算符和switch
Jun 17 #Python
python运行时间的几种方法
Jun 17 #Python
从局部变量和全局变量开始全面解析Python中变量的作用域
Jun 16 #Python
实例讲解Python中global语句下全局变量的值的修改
Jun 16 #Python
最大K个数问题的Python版解法总结
Jun 16 #Python
Python中的多行注释文档编写风格汇总
Jun 16 #Python
Python构造自定义方法来美化字典结构输出的示例
Jun 16 #Python
You might like
深入浅析PHP7.0新特征(五大新特征)
2015/10/29 PHP
浅谈PHP中其他类型转化为Bool类型
2016/03/28 PHP
thinkphp3.x中cookie方法的用法分析
2016/05/19 PHP
laravel数据库查询结果自动转数组修改实例
2021/02/27 PHP
js在输入框屏蔽按键,只能键入数字的示例代码
2014/01/03 Javascript
JavaScript模块随意拖动示例代码
2014/05/27 Javascript
javascript实现dom动态创建省市纵向列表菜单的方法
2015/05/14 Javascript
jQuery菜单插件用法实例
2015/07/25 Javascript
JQuery ztree 异步加载实例讲解
2016/02/25 Javascript
详解js的延迟对象、跨域、模板引擎、弹出层、AJAX【附实例下载】
2016/12/19 Javascript
jQuery Ajax全解析
2017/02/13 Javascript
js中怎么判断两个字符串相等的实例
2019/01/17 Javascript
Node.js实现用户评论社区功能(体验前后端开发的乐趣)
2019/05/09 Javascript
对layui初始化列表的CheckBox属性详解
2019/09/13 Javascript
构建Vue大型应用的10个最佳实践(小结)
2019/11/07 Javascript
Vue SPA 初次进入加载动画实现代码
2019/11/14 Javascript
HTML+JS实现“代码雨”效果源码(黑客帝国文字下落效果)
2020/03/17 Javascript
Python素数检测实例分析
2015/06/15 Python
Python中将字典转换为列表的方法
2016/09/21 Python
python随机取list中的元素方法
2018/04/08 Python
用Python配平化学方程式的方法
2019/07/20 Python
Python学习笔记之文件的读写操作实例分析
2019/08/07 Python
Python爬虫图片懒加载技术 selenium和PhantomJS解析
2019/09/18 Python
关于python 的legend图例,参数使用说明
2020/04/17 Python
Keras Convolution1D与Convolution2D区别说明
2020/05/22 Python
Python内存泄漏和内存溢出的解决方案
2020/09/26 Python
Opencv+Python识别PCB板图片的步骤
2021/01/07 Python
Python中使用Selenium环境安装的方法步骤
2021/02/22 Python
html5组织内容_动力节点Java学院整理
2017/07/10 HTML / CSS
Linux如何压缩可执行文件
2014/03/27 面试题
食品安全承诺书
2014/05/22 职场文书
优秀大学生自荐信
2014/06/09 职场文书
团日活动总结模板
2014/06/25 职场文书
红领巾广播站广播稿(3篇)
2014/09/20 职场文书
2019年员工旷工保证书!
2019/06/28 职场文书
MySQL 常见的数据表设计误区汇总
2021/06/07 MySQL