举例讲解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实现QQ游戏大家来找茬辅助工具
Sep 14 Python
利用Python循环(包括while&for)各种打印九九乘法表的实例
Nov 06 Python
Python基于贪心算法解决背包问题示例
Nov 27 Python
Python实现图片批量加入水印代码实例
Nov 30 Python
如何基于Python创建目录文件夹
Dec 31 Python
Python中常用的高阶函数实例详解
Feb 21 Python
Python reversed函数及使用方法解析
Mar 17 Python
tensorflow中tf.reduce_mean函数的使用
Apr 19 Python
vscode调试django项目的方法
Aug 06 Python
python爬虫构建代理ip池抓取数据库的示例代码
Sep 22 Python
Python collections模块的使用方法
Oct 09 Python
python代码实现备忘录案例讲解
Jul 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
优化使用mysql存储session的php代码
2008/01/10 PHP
PHP如何解决网站大流量与高并发的问题
2011/06/25 PHP
PHP常用函数和常见疑难问题解答
2014/03/05 PHP
Laravel 5框架学习之Eloquent (laravel 的ORM)
2015/04/08 PHP
JavaScript验证18位身份证号码最后一位正确性的实现代码
2014/08/07 Javascript
jQuery中html()方法用法实例
2014/12/25 Javascript
jquery实现公告翻滚效果
2015/02/27 Javascript
JavaScript使用delete删除数组元素用法示例【数组长度不变】
2017/01/17 Javascript
从零学习node.js之简易的网络爬虫(四)
2017/02/22 Javascript
validationEngine 表单验证插件使用实例代码
2017/06/15 Javascript
JavaScript实现数值自动增加动画
2017/12/28 Javascript
JS伪继承prototype实现方法示例
2018/06/20 Javascript
解决vue 中 echart 在子组件中只显示一次的问题
2018/08/07 Javascript
BootStrap中的模态框(modal,弹出层)功能示例代码
2018/11/02 Javascript
原生js实现的金山打字小游戏(实例代码详解)
2020/03/16 Javascript
微信小程序开发(一):服务器获取数据列表渲染操作示例
2020/06/01 Javascript
Vue看了就会的8个小技巧
2021/01/21 Vue.js
Python编程之列表操作实例详解【创建、使用、更新、删除】
2017/07/22 Python
Python将多个excel文件合并为一个文件
2018/01/03 Python
微信跳一跳辅助python代码实现
2018/01/05 Python
Python连接Hadoop数据中遇到的各种坑(汇总)
2020/04/14 Python
python中常见错误及解决方法
2020/06/21 Python
python3:excel操作之读取数据并返回字典 + 写入的案例
2020/09/01 Python
Html5监听手机摇一摇事件的实现
2019/11/07 HTML / CSS
丝芙兰中国官方商城:SEPHORA中国
2018/01/10 全球购物
C++:局部变量能否和全局变量重名
2014/03/03 面试题
八一演出活动方案
2014/02/03 职场文书
三年级学生评语
2014/04/23 职场文书
给校长的建议书100字
2014/05/16 职场文书
企业公益活动策划方案
2014/08/24 职场文书
2014年商场国庆节活动策划方案
2014/09/16 职场文书
乡镇干部个人整改措施思想汇报
2014/10/10 职场文书
见义勇为事迹材料
2014/12/24 职场文书
辩论赛开场白大全(主持人+辩手)
2015/05/29 职场文书
结婚司仪主持词
2015/06/29 职场文书
python 定义函数 返回值只取其中一个的实现
2021/05/21 Python