封装


什么是封装?

封装指的是将一个类中的属性和方法进行隐藏,让外界无法直接调用;


为什么我们要隐藏起来不给外部调用?

不是不给外部调用,而是不能直接调用,我们要想处理内部的变量,就需要用该类提供的方法;然后由于业务需求,我们就能够在方法中增加一些业务处理,从而不让使用者恶意使用;这就是为什么要封装的原因


封装数据属性的目的

封装实例属性或类属性的方法
隐藏变量的目的在于让外界操作者无法恶意更改

image.png


封装函数属性的目的

将外部使用者没必要使用的方法隐藏起来,可以降低使用者的复杂度,不然的话使用者使用.调用时能够看到一堆方法;
所以说隐藏函数属性的目的是为了降低使用者复杂度

image.png


封装的方式

封装数据属性和封装函数属性是一样的,都是通过给属性开头增加单下划线或双下划线


单下划线封装

定义:"单下划线"开始的成员变量叫做保护变量
作用:只有类对象和子类对象自己能访问到这些变量;不过外部也能够进行访问,只是不会存在调用提示,这种属于防君子不防小人;


双下划线封装

定义:双下划线" 开始的是私有变量
作用:意思是只有类对象自己能访问,连子类对象也不能访问到这个数据;外部也不能访问,调用时不会存在提示,这种相对于单下划线的方式,起到了一定的限制作用;

不过也不是不能访问,通过__dict__方法中对属性的存储,可以看到这只是对原有变量进行了变形,如果直接使用这个变形后的变量访问,还是能够访问到的;

class F:
    age = 18
    _name = 'age'
    __height = '180m'

print(F.__dict__)

{'age': 18, '_name': 'age', '_F__height': '180m'}

那么为什么类的内部能直接调用?
是因为在检查类语法的时候,会将类内部的私有变量转换成dict中的变形后的方法,做了一次转换,了解即可

posted @ 2021-07-03 21:02  中州韵  阅读(168)  评论(0编辑  收藏  举报