测开学习DAY23
黑马程序员网课学习(Python)
一、封装(定义类的过程)
1. 案例(存放家具)




2. 私有和公有

案例:
![]()

3. 对象的划分
Python 中一切皆对象. 即使用 class 定义的类也是一个对象
(1)实例对象(实例)
① 通过 类名() 创建的对象, 我们称为实例对象,简称实例
② 创建对象的过程称为是类的实例化
③ 我们平时所说的对象就是指 实例对象(实例)
④ 每个实例对象, 都有自己的内存空间, 在自己的内存空间中保存自己的属性(实例属性)
(2)类对象(类)
① 类对象 就是 类, 或者可以认为是 类名
② 类对象是 Python 解释器在执行代码的过程中创建的
③ 类对象的作用:
- 使用类对象创建实例 类名(),
- 类对象也有自己的内存空间, 可以保存一些属性值信息 (类属性)
④ 在一个代码中, 一个类只有一份内存空间
4. 属性的划分
(1)实例属性
① 概念: 是 实例对象 具有的属性
② 定义和使用:
- 在 init 方法中, 使用 self.属性名 = 属性值 定义
- 在方法中是使用 self.属性名 来获取(调用)
③ 内存:实例属性,在每个实例中都存在一份
④ 使用时机:
- 基本上 99% 都是实例属性,即通过 self 去定义
- 找多个对象,来判断这个值是不是都是一样的, 如果都是一样的, 同时变化,则一般定义为类属性, 否则定义为实例属性
(2)类属性
① 概念: 是 类对象 具有的属性
② 定义:在类内部,方法外部,直接定义的变量 ,就是类属性
③ 使用:
- 类对象.属性名 = 属性值 or 类名.属性名 = 属性值
- 类对象.属性名 or 类名.属性名
④ 内存:只有类对象中存在一份
(3)案例



5. 方法的划分
方法, 使用 def 关键字定义在类中的函数就是方法
(1)实例方法(最常用)
① 定义:

② 定义时机(什么时候用):
如果在方法中需要使用实例属性(即需要使用 self), 则这个方法必须定义为实例方法
③ 调用:
![]()
(2)类方法(会用)
① 定义:

② 定义时机(什么时候用):
- 前提, 方法中不需要使用实例属性(即 self)
- 用到了类属性, 可以将这个方法定义为类方法,(也可以定义为实例方法)
③ 调用:

(3)静态方法(基本不用)
① 定义:

② 定义时机(什么时候用):
- 前提, 方法中不需要使用实例属性(即 self)
- 也不使用类属性, 可以将这个方法定义为静态方法
③ 调用:

(4)案例

① 基本版本


② 优化(使用 类方法和静态方法)

二、继承
- 继承描述的是类与类之间的关系
- 继承的好处: 减少代码的冗余(相同的代码不需要多次重复书写), 可以直接使用
1. 语法


2. 案例


3. 结论

4. 重写

(1)覆盖
- 直接在子类中定义和父类中名字相同的方法
- 直接在方法中书写新的代码

(2)扩展
- 直接在子类中定义和父类中名字相同的方法
- 在合适的地方调用父类中方法 super().方法()
- 书写添加的新功能

三、多态(了解)
1. 是一种写代码,调用的一种技巧
2. 同一个方法, 传入不同的对象, 执行得到不同的结果, 这种现象称为是多态
3. 多态可以增加代码的灵活度-------- 哪个对象调用方法, 就去自己的类中去查找这个方法, 找不到去父类中找
四、补充

