day24 01 初识继承

面向对象的三大特性:继承,多态,封装

一、继承的概念

继承:是一种创建新类的方式,新建的类可以继承一个或者多个父类,父类又可称基类或超类,新建的类称为派生类或者子类

class A:  # 父类,基类,超类pass
class B:  # 父类,基类,超类pass
class A_son(A,B):  # 子类,派生类pass
class AB_son(A,B):  # 子类,派生类pass

  • 一个类可以被多个类继承,先有父类才有子类
  • 一个类可以继承多个父类----只在python里面才可以,其他语言不可以

注意:从父类不能知道自己将会被哪个类继承,但是从子类肯定可以知道自己的父类,这是从子类像父类指向单方向线程

二、父类的查看方法

类似于对像可以使用_dict_方法查看属性,子类也可以使用_bases_方法查看它的父类

class A:  # 父类,基类,超类pass
class B:  # 父类,基类,超类pass
class A_son(A):  # 子类,派生类pass
class B_son(A,B):  # 子类,派生类pass
class AB_son(A,B):  # 子类,派生类pass
print(A_son.__bases__)
print(B_son.__bases__)
print(AB_son.__bases__)
print(A.__bases__)
print(B.__bases__)

运行结果:

C:\Users\sku1-1\PycharmProjects\untitled\venv\Scripts\python.exe "C:/Users/sku1-1/PycharmProjects/untitled/day24  01 初识继承.py"
(<class '__main__.A'>,)
(<class '__main__.A'>, <class '__main__.B'>)
(<class '__main__.A'>, <class '__main__.B'>)
(<class 'object'>,)
(<class 'object'>,)Process finished with exit code 0

从上面的运行结果可以看到,特别的父类A和B的父类都是‘object’,如果没有继承父类,就默认继承‘object’,这也是python3的新式类

三、继承表达的关系:什么是什么的关系

只有是两个类之间才会产生继承的关系,两个类之间存在一些共同的抽象的东西,将这些共同的东西抽象出来就可以成为这两个类的父类

  以之前的人狗大战的游戏为例,里面的人物角色与狗的角色,定义它们的类的时候,里面有一些属性是相同的,比如:name,blood,aggr,而且狗和人都是动物,这样就可以抽象出它们的父类---animal,参考以下代码:

class animal:  # 父类def __init__(self,name,blood,aggr):self.name=nameself.blood=bloodself.aggr=aggr
class dog(animal):  # 子类def bite(self,someone):someone.blood-=self.aggr
class someone(animal):  # 子类def attack(self,dog):dog.blood -=self.aggrdog1 = dog('溜溜球',200,500)
print(dog1.name)
person1 = someone('王昭君',300,500)
print(person1.name)

运行结果:

溜溜球
王昭君

转载于:https://www.cnblogs.com/wxm422562/p/10887355.html

day24 01 初识继承相关推荐

  1. NoSQL学习笔记之MongoDB-01初识NoSQL

    NoSQL学习笔记之MongoDB-01初识NoSQL 一.什么是NoSQL NoSQL的出现背景: 随着互联网的发展,数据量激增,传统的集中式关系型数据库已经无法满足互联网海量数据的存储及使用需求. ...

  2. python人狗大战游戏_day22 01 初识面向对象----简单的人狗大战小游戏

    day22 01 初识面向对象----简单的人狗大战小游戏 假设有一个简单的小游戏:人狗大战   怎样用代码去实现呢? 首先得有任何狗这两个角色,并且每个角色都有他们自己的一些属性,比如任务名字nam ...

  3. Game Programming with DirectX -- 01[初识Direct3D]

    Game Programming with DirectX -- 01[初识Direct3D] 第一卷 朦胧的3D世界 第一集 初识Direct3D 简介 我们通过2个例子来简单的认识3D 1.1 接 ...

  4. 第一阶 01 初识Java 安装Eclipse运行及推荐软件

    学习目标 * 能够说出JDK,JRE,JVM各自的作用和关系 * 能够完成HelloWorld案例的编写及运行 * 能够使用注释对程序进行说明 * 能够知道标识符.关键字的特点 * 能够知道常量的分类 ...

  5. C语言基础01——初识C语言

    目录 什么是C语言 第一个C语言程序:HelloWorld 初识数据类型 初识常量.变量 初始字符串.转义字符.注释 初识选择语句.循环语句 初识函数.数组 初识关键字 定义常量和宏 格式化输入输出 ...

  6. 01初识鸿蒙_移动通讯技术的发展

    初识鸿蒙 一.移动通讯技术的发展 1G:大哥大-能打电话( 1980年摩托罗拉开发出了第一部手机) 2G:摩托罗拉诺基亚-能打电话, 能发短信----操作系统:塞班(Symbian) 下载速度:9KB ...

  7. add p4 多个文件_绘图技巧01:继承特性创建对象之神器ADD

    给大家分享一个实用绘图技巧 CAD里面有个MA格式刷(MATCHPROP),我们常用来刷取对象的特性,通过MA我们可以刷取原对象的图层,线型,颜色等图元属性. MA格式刷(MATCHPROP)的日常运 ...

  8. 从零学起-----Java篇01 初识Java

    目录 1.1 java诞生与发展 1.2 Java技术体系 1.3 Java 应用领域 1.4 常用DOS命令 1.4.1 如何进入DOS系统(打开DOS命令行的方式) 1.4.2 常用DOS命令 1 ...

  9. Spring 01 初识 Spring

    初识 Spring 文章目录 初识 Spring 一.学习任务 二.本章目标 三.Spring框架简介 3.1.Spring框架作用与优点 3.2.Spring框架体系结构介绍 3.3.Spring框 ...

最新文章

  1. 第三周 9.13-9.19
  2. MyCAT常用分片规则之分片枚举
  3. 增长黑盒:零代码基础做智能电商网站,不要重复发明轮子
  4. STC89C52单片机 数码管动态显示
  5. 【PAT甲级 大数运算】1065 A+B and C (64bit) (20 分) Python 全部AC
  6. java 怎么用毫秒_java1.8中如何使用精确到毫秒的时间
  7. MYSQL当前时间与数据库里数据时间做比较
  8. Affinity Publisher for Mac排版设计工具
  9. qt的opengl开发(qopenglwidget)(初始化,画线,平移,局部缩放)2d开发
  10. python垃圾分类游戏_垃圾分类就要来了?教你使用Python轻松完成垃圾分类
  11. CPT CPC CPA CPM 广告投放了解
  12. 从程序员到项目经理(8):程序员加油站 -- 再牛也要合群
  13. LeetCode题解(1872):石子游戏VIII(Python)
  14. 奶茶自由让人上头,95后为何钟爱这一杯甜蜜疗愈?
  15. easyExcel下载或导出
  16. 洛谷 P4233 射命丸文的笔记 题解
  17. 计算机网络-计算机网络的定义及分类
  18. 申报倒计时|武汉东湖高新区促进外资企业投资发展专项资金最后6天
  19. Point Cloud Library(PCL开源库)学习一
  20. php禁止视频自动播放,分享新浪视频禁止自动播放的方法

热门文章

  1. [蓝桥杯][算法提高VIP]分苹果(差分||树状数组)
  2. Remove One Element(贪心)
  3. Hakase and Nano(博弈)
  4. 单片机c语言正弦计算器,求一个 89C51 简易计算器的c语言程序 只要加减乘除就行!...
  5. mysql 5.7 windows 主从_windows server下Mysql5.7主从复制
  6. Servlet使用基本步骤及功能实现
  7. 深度学习之循环神经网络(1)序列表示方法
  8. js 查错_7年前端开发经验的我,写了本Vue.js实战开发,开源高清PDF下载
  9. redis缓存穿透、缓存雪崩、缓存击穿、并发竞争
  10. Swift 网络请求数据与解析