day 21 组合 封装
01 组合
- 一个类产生的对象是另一个对象的属性
- 为了减少代码量
02 封装
- 什么是封装
- 把一堆属性(特征与技能)封装到一个对象中。
- 可以通过(对象.属性)方式调用该属性
- 为什么要封装
- 通过(对象.属性)简化操作流程,方便存取
- 如何封装
- 在类内部定义一堆属性(特征;变量>数据属性,技能;函数>方法属性)
- 通过对象.属性=属性值
- 访问限制机制
- 在类内部定义的以(__)开头的属性,不能通过对象.属性的方式直接调用
- 把隐私和不能被外部轻易调用的属性,不可被直接调用
- 对数据获取的逻辑更加严谨,进而保证了数据的安全
- 在类中定义一个访问接口,让用户通过return方式获取但不能更改,内部可以进行逻辑判断
- 在类中定义一个修改接口,让用户通过调用接口方式修改属性值,内部可以进行逻辑判断
- 在python中不会强制内绝对不能访问,类内部的__属性会变成_类名__属性的形式,同过对象.变形名进行访问
- property;
- python内置的一个装饰器,主要是给类内部的方法使用
- 将类内部的方法隐藏起来,
- 将方法的调用方式,改为不需要括号
- 不能对被装饰过的方法属性修改值(应为它还是方法而不是数据)
- 修改和删除的方法
- 多态
- 多态指同一事物的多种形态,多态性,继承就是多态的一种表现形式
- 让多种不同类型的对象,在使用相同内容功能的情况下,调用同一种名字的方法
- 父类;定义一套统一的调用标准,子类;遵循父类的统一标准
- 多态的目的是为了统一调用标准
- 抽象类;abc模块
- 在python中,不会强制子类使用父类的标准,abc实现了这个功能