前言
@property可以将一个方法的调用方式变成“属性调用”。类似getter与setter方法。
一、实例
测试@property方法
class employee:
def __init__(self,name,salery):
self.__name=name
self.__salery=salery #全部改为私有属性,用户禁止访问
@property
def salery(self): #类似get_salery方法
return self.__salery
@salery.setter
def salery(self,salery): #类似set_salery方法
if 10000 < salery < 50000:
self.__salery = salery
else:
print("录入错误!薪水在10000-50000之间")
emp2=employee("差劲",30000)
print(emp2.salery)
emp2.salery=20000000
print(emp2.salery)
print("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$")
emp2.salery=40000
print(emp2.salery)
结果:
二、分析
本程序类似将用户输入的数据进行判断,之后将其存储起来。故将salery设置为私有属性。
使用@property装饰器得到用户输入的数据,再用if方法比较和输出。
三、比较
#测试@property方法
class employee:
def __init__(self,name,salery):
self.__name=name
self.__salery=salery #全部改为私有属性,用户禁止访问
#这是不用@property的土方法
def get_salery(self): #为用户提供输入属性
return self.__salery
def set_salery(self,salery): #不能省略salery
if 10000<salery<50000: #判断输入是否正确的方法
self.__salery=salery
else:
print("录入错误!薪水在10000-50000之间")
emp1=employee("差劲",30000)
print(emp1.get_salery())
emp1.set_salery(20000)
print(emp1.get_salery())
print("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$")
emp1.set_salery(500)
print(emp1.get_salery())
结果:
可以看到也可以成功输出出来。
总结
使用@property方法可以简化程序,两种方法都有可以实现按程序的正确输出。