举例讲解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设置windows桌面壁纸的实现代码
Jan 28 Python
把大数据数字口语化(python与js)两种实现
Feb 21 Python
python+selenium+autoit实现文件上传功能
Aug 23 Python
浅谈Python peewee 使用经验
Oct 20 Python
详解Python使用tensorflow入门指南
Feb 09 Python
利用anaconda保证64位和32位的python共存
Mar 09 Python
pygame实现俄罗斯方块游戏(对战篇1)
Oct 29 Python
Python3将ipa包中的文件按大小排序
Apr 17 Python
文件上传服务器-jupyter 中python解压及压缩方式
Apr 22 Python
在django中form的label和verbose name的区别说明
May 20 Python
python 实现两个npy档案合并
Jul 01 Python
Python Opencv轮廓常用操作代码实例解析
Sep 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 和 MySQL 基础教程(四)
2006/10/09 PHP
社区(php&&mysql)六
2006/10/09 PHP
用PHP和ACCESS写聊天室(五)
2006/10/09 PHP
php 在线打包_支持子目录
2008/06/28 PHP
基于PHP异步执行的常用方式详解
2013/06/03 PHP
php获取四位字母和数字的随机数的实现方法
2015/01/09 PHP
PHP实现通过正则表达式替换回调的内容标签
2015/06/15 PHP
PHP获取指定月份第一天和最后一天的方法
2015/07/18 PHP
PHP实现PDO操作mysql存储过程示例
2019/02/13 PHP
javascript之typeof、instanceof操作符使用探讨
2013/05/19 Javascript
jquery点击页面任何区域实现鼠标焦点十字效果
2013/06/21 Javascript
JQuery插件开发示例代码
2013/11/06 Javascript
JavaScript控制网页层收起和展开效果的方法
2015/04/15 Javascript
javascript+HTML5的canvas实现七夕情人节3D玫瑰花效果代码
2015/08/04 Javascript
jquery 全选、全不选、反选效果的实现代码【推荐】
2016/05/05 Javascript
不同js异步函数同步的实现方法
2016/05/28 Javascript
JS实现页面跳转参数不丢失的方法
2016/11/28 Javascript
jQuery实现动态添加节点与遍历节点功能示例
2017/11/09 jQuery
详解React项目的服务端渲染改造(koa2+webpack3.11)
2018/03/19 Javascript
vue-cli2 构建速度优化的实现方法
2019/01/08 Javascript
JavaScript算法学习之冒泡排序和选择排序
2019/11/02 Javascript
[01:03:41]DOTA2-DPC中国联赛 正赛 Dynasty vs XG BO3 第三场 2月2日
2021/03/11 DOTA
python解析文件示例
2014/01/23 Python
python 计算数组中每个数字出现多少次--“Bucket”桶的思想
2017/12/19 Python
异步任务队列Celery在Django中的使用方法
2018/06/07 Python
python多任务及返回值的处理方法
2019/01/22 Python
django有外键关系的两张表如何相互查找
2020/02/10 Python
Python类中self参数用法详解
2020/02/13 Python
指针和引用有什么区别
2013/01/13 面试题
怎么写好自荐书
2014/03/02 职场文书
《金色的脚印》教后反思
2014/04/23 职场文书
2015年大学生党员承诺书
2015/04/27 职场文书
《窃读记》教学反思
2016/02/18 职场文书
vue+springboot实现登录验证码
2021/05/27 Vue.js
详解redis在微服务领域的贡献
2021/10/16 Redis
解决xampp安装后Apache无法启动
2022/03/21 Servers