装饰器 property

@property装饰器

  • property属性内部进行一系列的逻辑计算,将计算结果返回

  • 检查参数

  • 把一个方法变成属性调用的

  1. 简单逻辑运算

    from datetime import date
    
    class Monkey(object):
    
        def __init__(self, new_name, term, height):
            self.name = new_name
            self.term = term
            self.__height = height
    
        @property
        def suppress(self):
            return date.today().year - self.term
    
        @property
        def height(self):
            return self.__height  # 一定要是私有属性, 只读属性
    
        @height.setter      验证参数
        def height(self, value):
            if not isinstance(value, int):
            
                self.__height = value
    
    
    if __name__ == '__main__':
        monkey = Monkey('wukong', 500, 99)
        lock_up = monkey.suppress
        monkey.height = 200
        height = monkey.height
        print(height)
    
    
    
  2. 简单逻辑运算

    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        # 获取商品价格      80
    obj.price = 200   # 修改商品原价     200 * 0.8 = 160
    del obj.price     # 删除商品原价    删除之后在打印,报错啦
    
发布了197 篇原创文章 · 获赞 36 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/a6864657/article/details/103981445
今日推荐