举例讲解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中将字典转换成其json字符串
Jul 16 Python
python在windows下实现ping操作并接收返回信息的方法
Mar 20 Python
python spyder中读取txt为图片的方法
Apr 27 Python
tensorflow更改变量的值实例
Jul 30 Python
Python pandas DataFrame操作的实现代码
Jun 21 Python
Python3分析处理声音数据的例子
Aug 27 Python
将python包发布到PyPI和制作whl文件方式
Dec 25 Python
Python操作MongoDb数据库流程详解
Mar 05 Python
django-利用session机制实现唯一登录的例子
Mar 16 Python
python mysql自增字段AUTO_INCREMENT值的修改方式
May 18 Python
如何写python的配置文件
Jun 07 Python
如何解决cmd运行python提示不是内部命令
Jul 01 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的开合式多级菜单程序
2006/10/09 PHP
简单的cookie计数器实现源码
2013/06/07 PHP
php获取qq用户昵称和在线状态(实例分析)
2013/10/27 PHP
将php数组输出html表格的方法
2014/02/24 PHP
ThinkPHP文件上传实例教程
2014/08/22 PHP
CodeIgniter连贯操作的底层原理分析
2016/05/17 PHP
Laravel框架实现定时Task Scheduling例子
2019/10/22 PHP
给Function做的OOP扩展
2009/05/07 Javascript
用JavaScript实现一个代码简洁、逻辑不复杂的多级树
2014/05/23 Javascript
浅析js中substring和substr的方法
2015/11/09 Javascript
html+javascript+bootstrap实现层级多选框全层全选和多选功能
2017/03/09 Javascript
vue获取dom元素注意事项
2017/12/28 Javascript
通过jquery获取上传文件名称、类型和大小的实现代码
2018/04/19 jQuery
自定义vue组件发布到npm的方法
2018/05/09 Javascript
解决Vue在Tomcat8下部署页面不加载的问题
2019/11/12 Javascript
JavaScript实现像雪花一样的Hexaflake分形
2020/07/07 Javascript
[53:52]OG vs EG 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
python使用scrapy解析js示例
2014/01/23 Python
Python实现扫描局域网活动ip(扫描在线电脑)
2015/04/28 Python
python logging 日志轮转文件不删除问题的解决方法
2016/08/02 Python
基于python中pygame模块的Linux下安装过程(详解)
2017/11/09 Python
django模板语法学习之include示例详解
2017/12/17 Python
解决Django后台ManyToManyField显示成Object的问题
2019/08/09 Python
python函数的作用域及关键字详解
2019/08/20 Python
python通过对字典的排序,对json字段进行排序的实例
2020/02/27 Python
德国汽车零件和汽车配件网上商店:kfzteile24
2018/11/14 全球购物
init进程的作用
2015/08/20 面试题
计算机学生求职信范文
2014/01/30 职场文书
财务管理专业求职信
2014/06/11 职场文书
离婚协议书怎么写的
2014/12/14 职场文书
小学优秀教师事迹材料
2014/12/16 职场文书
介绍信模板
2015/01/31 职场文书
用人单位聘用意向书
2015/05/11 职场文书
企业宣传稿范文
2015/07/23 职场文书
Java图书管理系统,课程设计必用(源码+文档)
2021/06/30 Java/Android
Python类方法总结讲解
2021/07/26 Python