python 对象属性

使用类@property可以使类方法转换为只读属性,同时可以定义设置,获取,删除的方法

 

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.getter 
    def price(self):
        return self._price 
 #访问property修饰的price类返回值,可以使用self._price访问,这是python约定的修饰私有化属性或方法的方式,这种单前置下划线的属性或方法,不能通过模块导入
   @price.deleter 
   def price(self): 
     del self.original_price
obj = Goods() 
obj.price # 获取商品价格 
obj.price = 200 # 修改商品原价 
del obj.price # 删除商品原价,删除执行的的是@price.deleter修饰的函数

 

posted @ 2020-08-12 23:04  inhocho  阅读(9)  评论(0)    收藏  举报