• 组合,封装与多态


    组合:
    1.什么是组合?
    组合指的是一个对象中的属性,是另一个对象.

    2.为什么要使用组合?
        组合目的和继承一样, 为了减少代码冗余.
    
    3.如何使用组合:
    

    封装(夺命三问):
    1.什么是封装?
    比喻:
    封: 比如把一个袋子封起来.
    装: 比如把一堆小猫,小狗,nick装到袋子里.

        封装指的是把一堆属性(特征与技能)封装到一个对象中.
        存数据的目的是为了取, 对象可以"."的方式获取属性.
    
        比喻: 对象就好比一个袋子, 袋子里面装一堆属性.
    
    2.为什么要封装?
        封装的目的为了方便存取,可以通过对象.属性的方式获取属性.
    
    3.如何封装
        特征: 变量 ---> 数据属性
        技能: 函数 ---> 方法属性
    
        在类内部,定义一堆属性(特征与技能).
        通过 对象.属性 = 属性值
    

    访问限制机制:
    1.什么是访问限制机制?
    在类内部定义, 凡是以__开头的数据属性与方法属性,
    都会被python内部隐藏起来,让外部不能"直接"访问类内部的__开头的属性.
    比如: __name = 'tank'

    2.访问限制机制的目的?
        一堆隐私的属性与不能被外部轻易访问的属性, 可以隐藏起来,不被外部直接调用.
        好处:
            对重要数据获取的逻辑更加严谨, 进而保证了数据的安全.
    
    接口: 隐私属性可以通过封装一个接口,在接口内做业务逻辑的处理,再把数据返回给调用者.
    
    注意: 在python中,不会强制限制属性的访问,类内部__开头的属性,只是做了一种变形.
    若想直接访问, 调用变形后的名字即可.
    class Foo:
        __name = 'tank'  # ---> _类名__属性名
    

    property:
    1.什么是property
    python内置的装饰器, 主要是给类内部的方法使用.

    2.为什么要用property
        使用它的目的,是将类内部的方法 (def 方法名()) 变成了 (def 方法).
        在对象调用某个方法时,将对象.方法()变成对象.方法(看起来想一个普通的数据属性)
    
    3.如何使用property
        @property
    

    多态:
    1.什么是多态?
    多态指的是同一种事物的多种形态.

    2.多态的目的:
        多态也称之为多态性, 在程序中继承就是多态的表现形式.
        多态的目的是为了, 让多种不同类型的对象, 在使用相同功能的情况下,调用同一个名字的方法名.
        父类: 定义一套统一的标准.
        子类: 遵循父类统一的标准.
        多态的最终目的: 统一子类编写的规范, 为了让使用者更方便调用相同功能的方法.
    
    3.如何实现:
        - 继承
    
    注意: 在python中,不会强制要求子类必须遵循父类的一套标准,所以出现了抽象类.
    

    抽象类(了解):
    1.是什么?
    abc模块 abstract_class

    2.使用的目的?
        强制子类必须遵循父类的一套标准.
    
    3.如何使用
        import abc
    

    鸭子类型:
    1.什么是鸭子类型?
    在不知道当前对象是何物的情况下,但是你长得像鸭子,那么你就是鸭子类型.

    在python中,不推荐使用抽象类强制限制子类的定义,但是推荐类都遵循鸭子类型.
    
    - 继承:
        耦合性太高,程序的可扩展性差
    
    - 鸭子类型:
        耦合度低,程序的可扩展性强
  • 相关阅读:
    为什么要财务自由
    2019小目标
    《小狗钱钱》后感
    从月光入门到迈出投资第一步
    tslint编译问题-内存溢出
    简单数组
    计算矩阵的乘积
    非数组求杨辉三角
    一维数组求杨辉三角
    二维数组求杨辉三角
  • 原文地址:https://www.cnblogs.com/jinhongquan/p/11656397.html
Copyright © 2020-2023  润新知