python--property属性

property属性

第一种:是一个装饰器

  • 作用:
    • 使得关联实例属性的getter,setter等方法可以在外部操作时直接操作属性一样,但实际上还是调用函数进行处理。
#coding=utf-8
# ############### 定义 ###############
class Goods:
    """定义一个商品类
       第一种装饰器:@property
       第二种装饰器:@property方法名.setter
       第三种装饰器:@property方法名.deleter
    """
    def __init__(self):
        self.__money = 0

    @property
    def price(self):
        return self.__money

    @price.setter
    def price(self, value):
        if value >= 0:
            self.__money = value
        else:
            print("error:请存放正确的数值")

    @price.deleter
    def price(self):
        print('@price.deleter')

# ############### 调用 ###############
obj = Goods()
obj.price          # 自动执行 @property 修饰的 price 方法,并获取方法的返回值
obj.price = 123    # 自动执行 @price.setter 修饰的 price 方法,并将  123 赋值给方法的参数value
del obj.price      # 自动执行 @price.deleter 修饰的 price 方法

第二种使用:类属性

# property属性的第二种定义方式:类属性定义方式
class Goods(object):
    def __init__(self):
        self.__price = 0

    def get_price(self):
        return self.__price

    def set_price(self, value):
        """必须两个参数"""
        if value >= 0:
            self.__price = value
        else:
            print("error:有点问题哦")

    def del_price(self):
        print("del price")

    price = property(get_price, set_price, del_price, "相关描述...")

obj = Goods()

obj.price  # 自动调用第一个参数中定义的方法:get_price
obj.price = "价格"  # 自动调用第二个参数中定义的方法:set_price方法,并将“价格”当作参数传入
desc = Goods.price.__doc__  # 自动获取第四个参数中设置的值:"相关描述..."
print(desc)
del obj.price  # 自动调用第三个参数中定义的方法:del_price方法

猜你喜欢

转载自blog.csdn.net/lb786984530/article/details/81192743