黑马程序员技术交流社区
标题:
Python中property属性-大公司都在用哦~~
[打印本页]
作者:
杰哥,我就服你
时间:
2018-6-12 12:32
标题:
Python中property属性-大公司都在用哦~~
本帖最后由 杰哥,我就服你 于 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__
# 获取价格的描述信息
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2