封装

封装:
字面意思:把什么东西装到容器里,再封闭起来
与隐藏类似,但不只是隐藏
官方解释:对外部隐藏实现细节,并提供简单的使用接口

封装的好处:
1.提高安全性 封装关键数据来实现
2.隔离复杂度 封装一些内部的实现方法来实现

python中的属性访问权限只有两种:
1.公开的(默认) 在任何地方都能访问到
2.私有的 仅在类内部可以使用

如何使用:在要封装的变量名或者方法名前面加两个下划线__ 使其变成私有的
访问器与设置器:
封装起来的属性外界完全无法使用 就没有意义
我们可以定义访问方法 和设置方法 称之为访问器和设置器
1.提供对私有属性的访问修改
2.增加额外的判断逻辑

property装饰器:
调用和修改私有属性的写法与普通属性的写法不一致
使用起来比较复杂

使用property装饰器可以将一个方法伪装成一个普通属性
这样对于使用者而言 调用方法一致

访问器:
@property 用点来访问属性时触发 p1.id_card

设置器
@属性名称.setter 用点来设置属性时触发 p1.id_card = ‘123456’

删除器
@属性名称.deleter 用def 删除属性时触发 def p1.id_card
接口:
interface 接口
是一组功能集合体

好处:用于提高程序的拓展性
接口用于定义一组功能,后续的程序只要按照接口来进行实现 就能被使用

抽象类:
使用class来模拟接口的问题是 不能强行限制子类必须实现接口的方法

抽象在这里指的是不具体 不清晰 看不懂
如果一个方法 没有实现体 那么这个方法就可以称之为抽象方法
如果一个类中存在抽象方法 那么这个类也是抽象的
反过来说 只要有方法没有实现体 那么这个类就是抽象类

作用:
抽象类 也是用于提高拓展性的 与接口类似的是 也能作为一套规范
但是抽象类比接口强的地方在 可以强行限制 子类必须实现父类中声明的方法

特点:
抽象类无法直接实例化 只能有子类继承之后 覆盖所有的抽象方法
才能实例化对象
posted @ 2019-02-20 18:58  XSHUshu  阅读(243)  评论(0编辑  收藏  举报