组合
定义:
组合指的是,一个对象中的属性是另一个对象
目的:
和继承一样,都是为了减少代码的冗余度
总结:
继承:
类与类的关系,一种是什么与什么的关系,子类和父类是从属关系
组合:
对象与对象的关心,一种什么有什么的关系,一个对象拥有另一个对象
封装
定义:
封装指的是把一堆属性(特征与技能)封装到一个对象中。
存数据的目的是为了取,对象可以“,”的方式获取属性
比喻:
对象就好比一个袋子,袋子里面装一堆属性
目的:
为了方便存取,可以通过 对象.属性的方式获取
如何封装:
特征:变量--->数据属性
技能:函数--->方法属性
在类内部,定义一堆属性(特征与技能),通过 对象.属性 = 属性值
访问限制机制
定义:
在类内部定义,凡是以 __ 开头的数据属性与方法属性,都会被Python内部隐藏起来,让外部不能直接访问类内部以 __ 开头的属性
比如: __name = ‘tank’
def __student(self):
pass
目的:
一堆隐私的属性与不能被外部轻易访问的属性,可以隐藏起来,不被外部调用
优势:对重要数据获取的逻辑更加严谨,进而保证了数据的安全
接口:
隐私属性可以通过封装一个接口,在接口内做业务逻辑的处理,再把数据返回给调用者
注意:在Python中,不UI强制限制苏醒的访问,类内部__ 开头的属性,只是做了一种变形
若想直接访问,调用变形后的名字即可
例:
__ name , 变形之后就是 _ 类名 __name
property
定义:
Python内置的装饰器,主要是给类内部的方法使用
目的:
使用他的目的就是将类内部的方法(def 方法名())变成了(def 方法)
在对象调用某一个方法时,将 对象.方法()变成对象。(看起来就像一个普通的数据)
如何使用:
@property
def 方法():
多态
定义:
多态指的是同一种事物的多种形态
目的:
多态也称之为多态性,在程序中继承就是多态的表现形式;
多态的目的是为了让多种不同类型的对象,在使用相同功能的情况下,调用同一个名字的方法名。
父类:定义一套统一的标准
子类:遵循父类统一的标准
多态的最终目的:同一子类编写的规范,为了来让使用者更方便的调用下昂通功能的方法
如何实现:
继承
注意:在Python中,不会强制要求子类必须遵循父类的一套标准,所以出现了抽象类
抽象类:
定义:
abc模块 abstract_class
目的:
强制子类必须遵循父类的一套标准
如何使用:
import abc
鸭子类型
定义:
在不知道当前类是什么的情况下,但是你长的像鸭子,那么你就是鸭子类型
在Python中,不推荐使用抽象类限制子类的定义,但是推荐,类都遵守鸭子类型
继承:耦合性太高,程序可扩展性差
鸭子类型:耦合程度低,程序的可扩展性强