组合,接口day21课堂小结

昨日回顾

  1. 继承

    ​ 新建类的方式,新建的类称之为子类或派生类,继承的类称之为父类,也叫基类或超类

  2. 继承的目的

    ​ 解决代码的冗余问题

  3. 寻找继承关系

    ​ 先抽象,再继承

  4. 什么是抽象

    ​ 抽取类相似的部分

  5. 在继承背景下对象属性的查找顺序

    -从对象

    -从子类

    -从父类

  6. 派生

    ​ 派生指的是子类继承父类的属性,并且派生出自己新的属性

  7. 子类派生出新的属性,并重用父类属性

    ​ 若子类新的属性与父类的属性相同,则以子类的为准。

    ​ 重用父类的两种方式:

     	1. 直接通过父类.`__init__`,将其当作普通的函数使用。
    
     		2. super().`__init__`,指向的是父类的`__init__`.
    
  8. 新式类与经典类

    ​ 继承了object类都称之为新式类

    ​ 在python2中,没有继承object的类都称之为经典类.

  9. 钻石继承:

    ​ 新式类:

    ​ 广度优先

    ​ 经典类:

    ​ 深度优先

    组合

    1.什么是组合?

    ​ 组合指的是一个对象中的属性,是另一个对象.

    2.为什么要使用组合?

    ​ 组合目的和继承一样,为了减少代码冗余。

    封装

    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中,不推荐使用抽象类强制限制子类的定义,但是推荐类都遵循鸭子类型.

  • 继承:
    耦合性太高,程序的可扩展性差

  • 鸭子类型:
    耦合度低,程序的可扩展性强

原文地址:https://www.cnblogs.com/shin09/p/11657293.html