装饰器
引入:Python内置的property作用就是把一个方法变成一个属性直接调用
1、普通方法调用
class Employee:
def __init__(self,name,salary):
self.__name = name
self.__salary = salary
def get_salary(self):
return self.__salary
def set_salary(self,salary):
if 1000 < salary < 50000:
self.__salary = salary
else:
print("录入错误,薪水在1000-50000这个范围")
emp1 = Employee("喔喔",15000)
print(emp1.get_salary())
emp1.set_salary(-2000)
print(emp1.get_salary())
输出:
15000
录入错误,薪水在1000-50000这个范围
15000
2、引用装饰器
class Employee:
def __init__(self,name,salary):
self.__name = name
self.__salary = salary
@property
def salary(self):
return self.__salary
@salary.setter
def salary(self,salary):
if 1000 < salary < 50000:
self.__salary = salary
else:
print("录入错误,薪水在1000-50000这个范围
emp1 = Employee("喔喔",15000)
print(emp1.salary)
emp1.salary = 20000
print(emp1.salary)
输出:
15000
20000
总结:
1、@property 把salary()方法装饰成像属性那样,可以直接取值,只能获取;
2、@salary.setter将salary()方法装饰成像属性那样,可以直接赋值;