码迷,mamicode.com
首页 > 其他好文 > 详细

属性的两种定义方式

时间:2017-05-07 20:06:06      阅读:255      评论:0      收藏:0      [点我收藏+]

标签:获取   int   imp   应用   indent   自动   实例   init   return   

装饰器方式:在类的普通方法上应用@property装饰器

技术分享经典类,具有一种@property装饰器(如上一步实例)
# ############### 定义 ###############    
class Goods:

    @property
    def price(self):
        return "wupeiqi"
# ############### 调用 ###############
obj = Goods()
result = obj.price  # 自动执行 @property 修饰的 price 方法,并获取方法的返回值

新式类,具有三种@property装饰器
# ############### 定义 ###############
class Goods(object):

    @property
    def price(self):
        print @property

    @price.setter
    def price(self, value):
        print @price.setter

    @price.deleter
    def price(self):
        print @price.deleter# ############### 调用 ###############
obj = Goods()

obj.price          # 自动执行 @property 修饰的 price 方法,并获取方法的返回值

obj.price = 123    # 自动执行 @price.setter 修饰的 price 方法,并将  123 赋值给方法的参数

del obj.price      # 自动执行 @price.deleter 修饰的 price 方法

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.deltter
    def price(self, value):
        del self.original_price

obj = Goods()
obj.price         # 获取商品价格
obj.price = 200   # 修改商品原价
del obj.price     # 删除商品原价

属性的两种定义方式

标签:获取   int   imp   应用   indent   自动   实例   init   return   

原文地址:http://www.cnblogs.com/stonerainjc/p/6821643.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!