本帖最后由 杰哥,我就服你 于 2018-6-12 13:31 编辑
property属性: 把一个方法变成属性调用,写起来像方法,用起来像属性。 经典类property属性
- 定义:在实例方法的前面添加@property装饰器,仅有一个self参数,有return返回数据
- 调用:对象 . 方法名 -----------不加括号
- 功能:property属性内部进行一系列的逻辑计算,最终将计算结果返回。
- 例子:# ############### 定义 ###############class Foo: def func(self): pass # 定义property属性 @property def prop(self): pass# ############### 调用 ###############foo_obj = Foo()foo_obj.func() # 调用实例方法foo_obj.prop # 调用property属性property属性的完整使用1. 新式类装饰器方式定义property属性
三种装饰器:@property ,@方法名 . setter ,@方法名 . deleter
三个方法的方法名一样,只是装饰器不同。
① @property 功能:对实例属性进行运算操作,return返回计算值 调用时用对象 .方法名
② @方法名 . setter 功能:修改传入参数来修改实例属性的值,调用时用对象 . 方法 =XXX
③@方法名 . deleter 功能:删除实例对象的值,调用时用del 对象 . 方法名
例子:class Goods(object): def __init__(self): # 原价 self.original_price = 100 # 折扣 self.discount = 0.8 @property def price(self): # 实际价格 = 原价 * 折扣 new_price = self.original_price * self.discount return new_price @price.setter def price(self, value): self.original_price = value @price.deleter def price(self): del self.original_priceobj = Goods()obj.price # 获取商品价格obj.price = 200 # 修改商品原价del obj.price # 删除商品原价
2. property属性的另一种定义方式:类属性方式
设计好get,set,del方法之后,后面写入 :
类属性名 = property(get_xxx,set_xxx,del_xxx,“描述内容”) (顺序必须get,set,del,..)
对象.类属性调用get方法,对象.类属性=XXX调用set方法,del 对象.类属性调用del方法,
对象.类属性.__doc__返回类属性的描述内容 例子:class Goods(object): def __init__(self): # 原价 self.original_price = 100 # 折扣 self.discount = 0.8 def get_price(self): # 实际价格 = 原价 * 折扣 new_price = self.original_price * self.discount return new_price def set_price(self, value): self.original_price = value def del_price(self): del self.original_price PRICE = property(get_price, set_price, del_price, '价格属性描述...')obj = Goods()obj.PRICE # 获取商品价格obj.PRICE = 200 # 修改商品原价del obj.PRICE # 删除商品原价Goods.PRICE.__doc__# 获取价格的描述信息
|
|