zoukankan      html  css  js  c++  java
  • 封装

    什么是封装

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

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

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

    封装的好处

      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模拟接口的问题是不能强制子类必须实现接口的方法   

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

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

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

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

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

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

  • 相关阅读:
    pytest框架
    Zabbix第九章(zabbix自定义item)
    Zabbix第七章(Zabbix监控本地)
    Zabbix第五章(配置zabbix的语言)
    Zabbix第四章(zabbix-server安装)
    Zabbix第二章(下载)
    Zabbix第一章(简介)
    线性筛
    Eratosthenes筛法
    质数判定
  • 原文地址:https://www.cnblogs.com/ShenJunHui6/p/10407392.html
Copyright © 2011-2022 走看看