Python3之封装property及使用

1.封装的作用:使属性私有,隐藏数据,使数据安全

2.封装的形式:对类内使用__属性名 或者__方法名,接着会进行变形,属性名或者方法名会被变形为:_类名__属性名的形式

3.2中的封装形式只在类的定义阶段生效,在定义完成后,对象调用__X只是在对象的名称空间内创造了一个新的属性__X

4.property的使用:
Python3之封装property及使用_第1张图片

首先被property装饰过的函数名会被当做对象的属性名去用,比如:f.name,该函数名字被伪装成了属性名,当f.name被调用时,首先从对象自己这找一个叫name的属性,自己这里没有跑去父类找,父类没有原始的name属性,但是有一个被property修饰的name属性,找到后触发name函数的运行,得到一个返回值,这个self.__name中存放真正的函数值,函数值被返回后就给了f.name

其次当f.name = ‘wsx’时会触发name.setter的执行,这时会将’wsx’赋值给value,value将值直接赋值给self.__name,将真正的值给更改掉

再次当del f.name时,会触发name.deleter的执行将真正的值也就是self.__name给删掉,查找f.name时会再次触发被property修饰的函数运行,而此时self.__name已经被删除,会报AttributeError错误

你可能感兴趣的:(Python)