举例讲解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 Web框架Flask下网站开发入门实例
Feb 08 Python
win系统下为Python3.5安装flask-mongoengine 库
Dec 20 Python
利用Python中unittest实现简单的单元测试实例详解
Jan 09 Python
python使用xslt提取网页数据的方法
Feb 23 Python
python实现堆和索引堆的代码示例
Mar 19 Python
python实现文件助手中查看微信撤回消息
Apr 29 Python
pytorch 模型可视化的例子
Aug 17 Python
Python图像处理库PIL的ImageGrab模块介绍详解
Feb 26 Python
浅谈python3打包与拆包在函数的应用详解
May 02 Python
简单介绍一下pyinstaller打包以及安全性的实现
Jun 02 Python
Python面向对象多态实现原理及代码实例
Sep 16 Python
Django celery异步任务实现代码示例
Nov 26 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
ThinkPHP实现动态包含文件的方法
2014/11/29 PHP
PHP生成唯一订单号
2015/07/05 PHP
php计算税后工资的方法
2015/07/28 PHP
php+ajax实现无刷新分页
2015/11/18 PHP
php简单实现多语言切换的方法
2016/05/09 PHP
php mysql数据库操作类(实例讲解)
2017/08/06 PHP
PHP PDOStatement::fetch讲解
2019/01/31 PHP
Yii框架 session 数据库存储操作方法示例
2019/11/18 PHP
jquery实现居中弹出层代码
2010/08/25 Javascript
jQuery 源码分析笔记(5) jQuery.support
2011/06/19 Javascript
jQuery+css实现百度百科的页面导航效果
2014/12/16 Javascript
jQuery带进度条全屏图片轮播特效代码分享
2020/06/28 Javascript
js实现动态加载脚本的方法实例汇总
2015/11/02 Javascript
jQuery 1.9.1源码分析系列(十)事件系统之主动触发事件和模拟冒泡处理
2015/11/24 Javascript
jQuery插入节点和移动节点用法示例(insertAfter、insertBefore方法)
2016/09/08 Javascript
jQuery进阶实践之利用最优雅的方式如何写ajax请求
2017/12/20 jQuery
js+css实现打字效果
2020/06/24 Javascript
vue+koa2实现session、token登陆状态验证的示例
2019/08/30 Javascript
vue中使用element ui的弹窗与echarts之间的问题详解
2019/10/25 Javascript
用Python和MD5实现网站挂马检测程序
2014/03/13 Python
解决python文件字符串转列表时遇到空行的问题
2017/07/09 Python
利用python如何在前程无忧高效投递简历
2019/05/07 Python
10 行Python 代码实现 AI 目标检测技术【推荐】
2019/06/14 Python
python requests使用socks5的例子
2019/07/25 Python
Python爬虫如何破解JS加密的Cookie
2020/11/19 Python
Python与C/C++的相互调用案例
2021/03/04 Python
一款基于css3麻将筛子3D翻转特效的实例教程
2014/12/31 HTML / CSS
HTML5实现文件断点续传的方法
2017/01/04 HTML / CSS
快速实现一个简单的canvas迷宫游戏的示例
2018/07/04 HTML / CSS
英国二手物品交易网站:Preloved
2017/10/06 全球购物
法国最大电子商务平台:Cdiscount
2018/03/13 全球购物
Nanushka官网:匈牙利服装品牌
2019/08/14 全球购物
存储过程和sql语句的优缺点
2014/07/02 面试题
医药专业推荐信
2013/11/15 职场文书
暑假安全保证书
2015/02/28 职场文书
阿里云国际版 使用Nginx作为HTTPS转发代理服务器
2022/05/11 Servers