zoukankan      html  css  js  c++  java
  • python 中 property 属性的讲解及应用

    Python中property属性的功能是:property属性内部进行一系列的逻辑计算,最终将计算结果返回

    property属性的有两种方式:

      1. 装饰器 即:在方法上应用装饰器

       2. 类属性 即:在类中定义值为property对象的类属性

    装饰器:

    装饰器类有三种访问方式,并分别对应了三个被@property、@方法名.setter、@方法名.deleter修饰的方法,定义为对同一个属性:获取、修改、删除

      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_price
    
      obj = Goods()
      obj.price         # 获取商品价格
      obj.price = 200   # 修改商品原价
      del obj.price     # 删除商品原价

    类属性

      property方法中有个四个参数

        第一个参数是方法名,调用 对象.属性 时自动触发执行方法,对应获取功能

        第二个参数是方法名,调用 对象.属性 = XXX 时自动触发执行方法,对应修改功能

        第三个参数是方法名,调用 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     # 删除商品原价
     
  • 相关阅读:
    Linux下MySql多实例免安装部署
    linux apf防火墙安装配置
    Fedora Yum命令查询软件包及清除缓存
    什么时候使用e.target.content和e.target as MovieClip
    帧频计数器
    设置播放器的品质
    访问文件名连续的mc、txt、btn
    Sound 音乐工具类【转载】
    确定字符串中、出现特定字符串的次数
    数组var _list:Array = new Array({logType:"1"});
  • 原文地址:https://www.cnblogs.com/skaarl/p/9386376.html
Copyright © 2011-2022 走看看