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     # 删除商品原价
     
  • 相关阅读:
    cocos3.2触摸事件接收顺序
    触摸点是否在按钮矩形内
    scrollview里container拖动显示问题
    cocos2dx 显示对象尺寸
    allocating an object of abstract class
    学习scorllview
    cocos2dx引用计数
    addchild 报错不能添加nil
    有用的宏
    一段SQL
  • 原文地址:https://www.cnblogs.com/skaarl/p/9386376.html
Copyright © 2011-2022 走看看