10.11 组合,封装,多态
组合
什么是组合
组合指的是一个对象中的属性,是另一个对象
为什么要使用组合
组合目的和继承一样,是为了减少重复代码
如何使用组合
class People:
def __init__(self,name,age,sex):
self.name = name
self.age = age
self.sex = sex
class Teacher(People):
def __init__(self,name,age,sex):
super().__init__(name,age,sex)
class Student(People):
def __init__(self,name,age,sex)
People.__init__.get(name,age,sex)
封装
什么是封装
指把一堆属性封装到一个对象中.
存数据是为了取,对象可以以.
的方式获取属性.
为什么要封装
封装的目的是为了方便存取,可以通过对象.
属性的方式获取属性.
如何封装
特征:变量→数据属性
技能:函数→方法属性
在类内部,定义一堆属性,通过对象.属性 = 属性值
的方式调用
访问限制机制
什么是访问限制机制
在类内部定义,凡是以__
开头的数据属性与方法属性,都会被python内部隐藏起来,让外部不能直接访问内部的__
开头的属性.
访问限制机制的目的
一堆隐私的属性与不能被外部轻易访问的属性,可以隐藏起来,不被外部直接调用.
好处:对重要数据获取的逻辑更加严谨,进而保证了数据的安全.
接口:隐私属性可以通过封装一个接口,在接口内做业务逻辑的处理,再把数据返回给调用者.
注意:在python中,不会强制限制属性的访问,类内部__
开头的属性,只是做了一种变形,若想直接访问,调用变形后的名字即可.
class Foo:
__name = 'aaa' ## _类名__属性名(__name变形后的名字)
property
什么是property
python内置的装饰器,主要是给类内部的方法使用.
为什么要用property
使用他的目的,是将类的内部的方法def 方法名()
变成了def 方法
在对象调用某个方法时,将对象.方法()
变成对象.方法
看起来像一个很普通的数据属性.
如何使用property
直接@property
使用
多态
什么是多态
多态指的是同一个事物的多种形态
多态的目的
多态也称之为多态性,在程序中继承就是多态的表现形式.
多态的目的是为了,让多种不同类型的对象,在使用相同的功能的情况下,调用同一个名字的方法.
父类:定义一套统一的标准.
之类:遵循父类统一的标准
多态最终的目的:统一子类编写的规范,为了让使用者更方便调用相同功能的方法
如何实现
-继承
注意:在python中,不会强制要求子类必须遵循父类的一套标准,所以出现了抽象类.
抽象类(了解)
什么是抽象类
abc模块
abstract_class
使用的目的
强制子类必须遵循父类的一套标准
如何使用抽象类
import abc
鸭子类型
什么是鸭子类型
在不知道当前对象是何物的情况下,但是你长的像鸭子,那么你就是鸭子类型
在python中,不推荐使用抽象类强制限制子类的定义,但是推荐类都遵循鸭子类型.
继承:耦合性太高,程序的可扩展性弱
鸭子类型:耦合性低,程序的可扩展性强