语法糖
当我们的属性私有化之后,我们可以通过,暴露出的接口来访问我们的变量,
在python中也提供了另外一种机制,可以将函数作为变量来调用的一种机制,
@property装饰器的作用就是把我们函数作为变量来进行调用.,
与此同时它会生成另外一个装饰器,装饰器名字叫做@属性.setter的装饰器,
这个装饰器添加设置方法上面,将设置的函数作为属性来进行调用.
优点:
- 1.使用者调用起来更加的方便.
- 2.使代码逻辑更加清晰
在get的方法上面添加@property的装饰器,在set的方法上面添加@属性.setter的装饰器.
class Person:
def __init__(self,name,age):
self.name = name
self.__age = age
@property #getAge
def age(self):
return self.__age
@age.setter #setAge
def age(self,age):
if age>200 or age<0:
print("年龄非法设置失败...")
self.__age = 0
else:
self.__age = age
if __name__ == "__main__":
per = Person("lili",18)
# print(per.age)
per.age = int(input("输入一个数字"))
print(per.age)