python全栈day17——面向对象多态封装

01 多态                          
#什么是多态
含义:一个类表现出的多种状态:通过继承实现的。
在java中,指一个类中定义了多个同名方法,对象通过调用这些方法实现不同的功能,而区分这些方法的方式基于参数的数据类型和参数的个数。
在python中,函数的参数不需要指定数据类型,所以我们也不需要通过继承的形式来统一一组数据类型。换句话说,所有类的对象都是object类型的,所以在python中其实处处是多态。
#多态在python中的应用
#鸭子类型
len() 范围:str,list,tuple,dict,set,range
index() 范围:str,list,tuple
print()  范围:所有对象都是鸭子类型
没有通过明确的继承关系实现多态,而是通过一个模糊的概念来判断这个函数能不能接受这个类型的参数。


02 封装                           
#广义的封装
将复杂的代码打包,这样是为了只有这个类的对象才能使用定义在类中的方法。
#狭义的封装
把一个名字藏在类中,这样的行为称为私有化

注意:类中的静态变量和方法名在程序加载的过程中就已经执行完了,不需要等待调用。
在这个类的加载完成之前,类名还没有出现在内存空间中。
#私有的
私有的静态属性可以在类中的内部使用,用来隐藏某个变量的值。在类中定义的隐藏属性发生了变形,定义了__discount = 0,在外部直接调用,调不到,在类空间中变形成:_类名__discount,在外可以通过这个方式调到类的私有变量,但是原则上不允许这样用。
#为什么要定义私有变量呢?
1.不想让你看见这个值
2.不想让你修改这个值
3.让你在修改值时给出一定的限制:保证了数据的安全
4.有些方法或者属性不希望被子类继承
#类中的私有成员:
1.私有静态属性
2.私有的对象属性
3.私有的方法
#私有变量能不能在外部定义?

不能的,在外部定义的变量都是普通变量
#私有变量能不能被继承?

不能,类外不要去强行引用类中定义的私有属性

03 内置函数                         
property是一个装饰器函数
装饰器函数都使用在函数、方法、类的上面一行直接@装饰器的名字
#装饰器分类:
1.装饰函数
2.装饰方法
3.装饰类
property是装饰方法的装饰器
作用:将一个方法伪装成一个属性

可以访问思维导图记忆:https://www.processon.com/view/link/5b866696e4b06fc64adb2cc0

posted @ 2018-08-29 17:26  AbnerLing  阅读(74)  评论(0编辑  收藏  举报