举例讲解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中Django发送带图片和附件的邮件
Mar 31 Python
python 利用栈和队列模拟递归的过程
May 29 Python
python保存文件方法小结
Jul 27 Python
Python从单元素字典中获取key和value的实例
Dec 31 Python
详解python中sort排序使用
Mar 23 Python
深入了解和应用Python 装饰器 @decorator
Apr 02 Python
Python3简单实现串口通信的方法
Jun 12 Python
Django接收自定义http header过程详解
Aug 23 Python
解决Python中回文数和质数的问题
Nov 24 Python
Pycharm中切换pytorch的环境和配置的教程详解
Mar 13 Python
Python OpenCV去除字母后面的杂线操作
Jul 05 Python
python如何实现读取并显示图片(不需要图形界面)
Jul 08 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
php Ajax乱码
2008/04/09 PHP
php中使用parse_url()对网址进行解析的实现代码(parse_url详解)
2012/01/03 PHP
php数组删除元素示例
2014/03/21 PHP
ThinkPHP CURD方法之page方法详解
2014/06/18 PHP
通过php删除xml文档内容的方法
2015/01/23 PHP
PHP学习笔记(二):变量详解
2015/04/17 PHP
分享php分页的功能模块
2015/06/16 PHP
如何在Web页面上直接打开、编辑、创建Office文档
2007/03/12 Javascript
利用JS实现浏览器的title闪烁
2013/07/08 Javascript
js取消单选按钮选中示例代码
2013/11/14 Javascript
javascript二维数组转置实例
2015/01/22 Javascript
javascript实现倒计时(精确到秒)
2015/06/26 Javascript
JavaScript实现把数字转换成中文
2015/06/29 Javascript
Bootstrap Paginator分页插件与ajax相结合实现动态无刷新分页效果
2016/05/27 Javascript
AngularJS过滤器filter用法实例分析
2016/11/04 Javascript
解决easyui日期时间框ie的兼容的问题
2018/03/01 Javascript
Node.Js中实现端口重用原理详解
2018/05/03 Javascript
纯javascript前端实现base64图片下载(兼容IE10+)
2018/09/14 Javascript
[03:27]《辉夜杯》线下训练营 导师CU和海涛指点迷津
2015/10/23 DOTA
Python下线程之间的共享和释放示例
2015/05/04 Python
Python中str.format()详解
2017/03/12 Python
centos 安装python3.6环境并配置虚拟环境的详细教程
2018/02/22 Python
浅析Python函数式编程
2018/10/06 Python
Django forms组件的使用教程
2018/10/08 Python
详解Appium+Python之生成html测试报告
2019/01/04 Python
Python 常用模块 re 使用方法详解
2019/06/06 Python
python中实现词云图的示例
2020/12/19 Python
求职者应聘的自我评价
2013/10/16 职场文书
告诉你怎样写创业计划书
2014/01/27 职场文书
简历上的自我评价怎么写
2014/01/28 职场文书
全国道德模范事迹
2014/02/01 职场文书
经贸日语专业个人求职信范文
2014/04/29 职场文书
法人代表授权委托书范文
2014/09/10 职场文书
学习党章的体会
2014/11/07 职场文书
大学军训通讯稿
2015/07/18 职场文书
使用Docker容器部署rocketmq单机的全过程
2022/04/03 Servers