什么是封装

  字面意思 把什么东西装到容器 在封闭起来   

  与隐藏有相似指出 不是单纯的隐藏   

  官方解释:对外部隐藏实现细节,并提供简单的使用接口

封装的好处

  1.提高安全性 封装关键数据来实现     

  2.隔离复杂度 封装一些内部的实现逻辑(方法)来实现

python中属性的访问权限

  1.公开的(默认)在任何地方都能访问到     

  2.私有的 仅在类内部可以使用 外界完全无法使用 那就没有意义   

我们可以定义访问方法和设置方法     

  1.提供对私有属性的访问和修改     

  2.增加额外的判断逻辑

property装饰器

  问题:访问和修改私有属性的写法与普通属性的写法不一致     

  对使用者而言更复杂   

使用property装饰器可以将一个方式伪装成一个普通属性     

  这样对于使用者而言 使用方法一致了   

弊端是方法不能增加额外的参数只能有一个self     

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

设置器

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

删除器

  @属性名称.deleter 用del 删除属性时触发 del p1.id_card

如何封装:

  使用特殊语法:给要隐藏的变量名称前面加上两个下划线_ 使其变为私有     

  python是通过变形的方式 来完成使用化操作     

  具体:把双下划线开头的名字 在名字前添加类名     

  发生形变操作时在定义阶段就发生了并且只发生一层     

  总结:默认情况下 子类无论是类内部还是外部时不能访问父类的私有属性的 当然你可以强行访问

封装方法

  场景:一些方法的存在是为了 完成其他功能这些方法不应该提供给外界 例如发动机中的 打火这个功能     

  当一个方法中的代码太多时 我们需要将其拆分为不同的小函数 这个小函数不应该提供给外界

接口:

  interface 接口     

  是一组功能的结合体     

  好处:同于提高程序的扩展性     

  接口用于定义一组功能,后续的程序只要按照接口来实现 就能被使用     

  例如电脑的usb接口 只要按照usb接口规定来实现 就能被电脑来使用     

  可以将接口理解为是一套规范     

  封装的实现原理

抽象类

  使用class模拟接口的问题是不能强制子类必须实现接口的方法   

  抽象在这里指的是 不具体 不清晰看不懂   

  如果一个方法没有实现体 那么这个方法就可以称之为抽象方法   

  反过来说 只要有方法没有实现体 那么这个类就是抽象的   

  抽象类 也是用来提高扩展性的 与接口相似的是 也可以作为一套规范   

  比接口强大的地方在于可以强行限制 子类必须实现父类中声明的方法   

  抽象类无法直接实例化 只能由子类继承之后 覆盖所有的抽象方法才能实例化对象

 posted on 2019-02-20 16:20  HeiTangMuSi  阅读(172)  评论(0编辑  收藏  举报