举例讲解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中的os.path路径模块中的操作方法总结
Jul 07 Python
Python实现分段线性插值
Dec 17 Python
一行python实现树形结构的方法
Aug 09 Python
Python 获取项目根路径的代码
Sep 27 Python
python中的函数递归和迭代原理解析
Nov 14 Python
python3.x 生成3维随机数组实例
Nov 28 Python
在Python中使用MongoEngine操作数据库教程实例
Dec 03 Python
Python中Flask-RESTful编写API接口(小白入门)
Dec 11 Python
python获取栅格点和面值的实现
Mar 10 Python
keras模型保存为tensorflow的二进制模型方式
May 25 Python
Python urllib库如何添加headers过程解析
Oct 05 Python
python爬虫scrapy图书分类实例讲解
Nov 23 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
欧美媒体选出10年前最流行的17部动画
2017/01/18 日漫
PHP+AJAX实现无刷新注册(带用户名实时检测)
2006/12/02 PHP
php的正则处理函数总结分析
2008/06/20 PHP
php+mysql事务rollback&commit示例
2010/02/08 PHP
php学习笔记 PHP面向对象的程序设计
2011/06/13 PHP
curl不使用文件存取cookie php使用curl获取cookie示例
2014/01/26 PHP
ThinkPHP控制器间实现相互调用的方法
2014/10/31 PHP
CentOS下PHP7的编译安装及MySQL的支持和一些常见问题的解决办法
2015/12/17 PHP
php使用pear_smtp发送邮件
2016/04/15 PHP
Prototype使用指南之enumerable.js
2007/01/10 Javascript
JQuery 选择器 xpath 语法应用
2010/05/13 Javascript
js获取网页高度(详细整理)
2012/12/28 Javascript
js 获取input点选按钮的值的方法
2014/04/14 Javascript
jQuery插件HighCharts绘制2D圆环图效果示例【附demo源码下载】
2017/03/09 Javascript
JavaScript标准对象_动力节点Java学院整理
2017/06/27 Javascript
基于vue 实现token验证的实例代码
2017/12/14 Javascript
在Vue中获取组件声明时的name属性方法
2018/09/12 Javascript
javascript中函数的写法实例代码详解
2018/10/28 Javascript
json解析大全 双引号、键值对不在一起的情况
2019/12/06 Javascript
解决Vue使用bus总线时,第一次路由跳转时数据没成功传递问题
2020/07/28 Javascript
vue+echarts实现动态折线图的方法与注意
2020/09/01 Javascript
python 将print输出的内容保存到txt文件中
2018/07/17 Python
python语音识别实践之百度语音API
2018/08/30 Python
Python高斯消除矩阵
2019/01/02 Python
Python使用pydub库对mp3与wav格式进行互转的方法
2019/01/10 Python
Python 中的 import 机制之实现远程导入模块
2019/10/29 Python
解决在keras中使用model.save()函数保存模型失败的问题
2020/05/21 Python
使用Python判断一个文件是否被占用的方法教程
2020/12/16 Python
北京振戎融通Java面试题
2015/09/03 面试题
纪念建党演讲稿范文
2014/01/13 职场文书
团日活动总结模板
2014/06/25 职场文书
公共场所禁烟倡议书
2014/08/30 职场文书
上课讲话检讨书范文
2015/05/07 职场文书
python函数指定默认值的实例讲解
2021/03/29 Python
opencv 分类白天与夜景视频的方法
2021/06/05 Python
利用Java连接Hadoop进行编程
2022/06/28 Java/Android