装饰器@property
原创...小于 1 分钟
@property
可以将一个方法的调用方式变成“属性调用(不加括号)”。
@property
主要用于帮助我们处理属性的读操作、写操作。对于某一个属性,我们可以直接通过:emp1.salary = 30000
如上的操作读操作、写操作。但是,这种做法不安全。比如,我需要限制薪水必须为1-10000
的数字。这时候,我们就需要通过使用装饰器@property
来处理。
class Employee:
age = 26
__company = "WEB"
def __init__(self, name, salary):
self.name = name
self.__salary = salary
@property # 相当于salary属性的getter方法
def salary(self):
print(f"月薪为:{self.__salary}")
return self.__salary
@salary.setter
def salary(self, val):
if 0 < val < 100000:
self.__salary = val
else:
print("工资不合理")
p1 = Employee("小米", 8000)
print(p1._Employee__salary) # 外部强行访问私有实例属性 8000
p1.salary # 外部通过装饰器强行访问私有实例属性
p1.salary = 1000000 # 外部对私有实例属性赋值
Powered by Waline v2.15.7