封装,语法糖--@property,黑魔法,Python中的下划线
封装
面向对象的三大特征:封装,继承以及多态
- 广义的封装:类与函数的定义就是封装的体现。
- 狭义的封装:类中的有些属性我们不希望外界能够直接访问,我们可以将这些属性
- 进行私有化只有本类持有,再给外界暴露出一个访问的接口即可。
- 封装的本质:属性私有化的过程
- 封装的优点:提高数据的复用性,保证数据的安全性
私有化: self.__age
def __init__(self,age):
self.__age = age
- 需要通过setter和getter方法来调用该私有变量
- 对于私有化的属性我们可以对它进行数据过滤
语法糖
@property功能:可以将函数转为属性来进行调用。
将@property添加给getter头上,将getter变成一个属性来进行调用
与此同时,@property还会生成一个新的装饰器,这个装饰器的名字叫做
@属性.setter的装饰器,这个装饰器可以将setter方法变为属性赋值。
优点:方便调用者写出更加简洁的代码。
def __init__(self,age):
self.__age = age
#语法糖(可将函数转为属性来进行调用)
@property # getter方法
def age(self):
return self.__age
#前面一定要有getter方法,因为这是语法糖-