A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 杰哥,我就服你 于 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__# 获取价格的描述信息





0 个回复

您需要登录后才可以回帖 登录 | 加入黑马