经典类中的属性只有一种访问方式,其对应被 @property 修饰的方法
新式类中的属性有三种访问方式,并分别对应了三个被@property、@方法名.setter、@方法名.deleter修饰的方法
class Goods:
"""定义一个商品类
第一种装饰器:@property
第二种装饰器:@property方法名.setter
第三种装饰器:@property方法名.deleter
"""
@property
def price(self):
print('@property')
@price.setter
def price(self, value):
print('@price.setter')
@price.deleter
def price(self):
print('@price.deleter')
# price = property(get_price, set_price, del_price, "相关描述...")
obj = Goods()
obj.price # 自动执行 @property 修饰的 price 方法,并获取方法的返回值
obj.price = 123 # 自动执行 @price.setter 修饰的 price 方法,并将 123 赋值给方法的参数value
del obj.price # 自动执行 @price.deleter 修饰的 price 方法
Python的property属性的功能是:property属性内部进行一系列的逻辑计算,最终将计算结果返回。
注意
定义property属性共有两种方式,分别是【装饰器】和【类属性】,而【装饰器】方式针对经典类和新式类又有所不同。
通过使用property属性,能够简化调用者在获取数据的流程