day21继承

昨日回顾

1、面向对象

​ 是一种编程思想 核心就是对象

将程序看做一堆对象的集合 程序的功能就是控制调度对象来交互完成

2、为什么使用面向对象

​ 优点 扩展性高 灵活性 重用性、

​ 缺点 程序结构更加复杂 无法预知执行结果

3、类 和对象

​ 类是一系列具备相同特征和行为的对象的集合体 是一种抽象概念

对象 是具备某些特征和行为的集合体 是具体存在的某个事物

类包含多个对象

对象属于某个类型

4、定义

5、属性的正确使用

对象公共的部分放到类中

每个对象独有的放在对象自己的名称空间中

属性的增删改查

6、初始化函数

​ 用来给对象附初始值 和一些别的初始化逻辑

​ 不能返回值 只能返回none

7、绑定方法

​ 对象和函数 对象的绑定方法

当使用对象调用时 会自动传入对象本身作为第一个参数

当使用类调用时 那就是普通函数需要自己传值

​ 类和函数 类的绑定方法

​ 用类或对象调用会传入类本身

​ @classme

8、非绑定方法

​ 场景

​ 当函数的逻辑中需要访问对象时 那就绑定给对象 仅需要类中数据就绑定给类

属性的查找顺序 先找对象自己的名称空间 找不到在找类的名称空间 类找不到他的父类。

今日内容

oop的三大特征之一

封装 继承 多态

继承

什么是继承

​ 继承是一种关系 通过继承关系,继承的一方可以直接使用被继承一方已经有的东西,被继承的一方称之为父,继承的一方称之为子。

在python3中创建类时必然继承另一个类 如果没有显示指定父类,则默认继承object;object是跟类 所有类都直接或间接的继承object。

为什么要使用继承

​ 1、减少代码重复 提高重用性

​ 2、为多态提供必要的支持

在程序中 ,继承描述的就是类和类之间的关系

语法

class 类名称(父类的名称):
    类的内容





#在python中  一个子类可以继承多个父类

抽象与继承(先抽象再继承):

什么是抽象

​ 将多个子类中相同的部分 进行抽取,形成一个新的类 这个过程也称之为抽象过程。

查找顺序

​ 先找对象自己的----所在类中----找父类----父类的父类----Object

抽象的使用场景

继承是基于抽象的结果,通过编程语言去实现它,肯定是先经历抽象这个过程,才能通过继承的方式去表达出抽象的结构。

抽象只是分析和设计的过程,一个动作或者说一个技巧,通过抽象可以得到的类

派生

当一个子类中出现了与父类中不同的内容时,这个子类就称之为派生类

通常子类都会写一些新的代码 不可能和父类完全一样 即通常都是派生类

所以派生类指的就是子类

覆盖

当子类出现了与子类与父类名称完全一致的属性或是方法

练习 实现一个可以限制元素类型的容器(字典 列表 元祖 集合 字符串)

子类中访问父类的内容

语法

方式一:
super(当前类名称,self).你要调的父类的属性或方法
方式二:
super().你要调的父亲的属性或方法
方式三:
类名称.你要调的父类的属性或方法(self)
方式三与继承无关
    

强调

​ 当你继承一个现有的类 并且你覆盖了父类的init方法时,必须在初始化方法的第一行调用父类的初始化方法,并传入父类所需的参数

组合

也就一种关系 描述两种对象之间是什么 有什么的关系

将一个对象作为另一个对象的属性 即什么有什么

组合的目的

也就是为了重用现有的代码

什么时候使用继承分析两个类的关系 到底是不是 什么是什么的关系

什么时候使用组合 如果两个类之间没有什么太大关系 完全不属于同类

另外组合相比继承 耦合度更低了

菱形继承

​ 首先明确python支持多继承

补充 新式类与经典类

python3中任何类都是直接或者间接的继承Object

新式类 任何显式或隐式地继承自Object的类就称之为新式类 python3中全都是新式类

经典类 既不是Object的子类 仅在python2中出现

当出现了菱形继承时,新式类,先深度,当遇到共同父类时就广度

新式类 就是深度优先

转载于:https://www.cnblogs.com/panyi2019/p/11265602.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值