python里面的property属性定义和方式

property分为两种方式

装饰器 即:在⽅法上应⽤装饰器
类属性 即:在类中定义值为property对象的类属性

1.新式类,具有三种@property装饰器:

class Goods:
    @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方法

注意
经典类中的属性只有⼀种访问⽅式,其对应被 @property 修饰的⽅法
新式类中的属性有三种访问⽅式,并分别对应了三个被@property、@⽅
法名.setter、@⽅法名.deleter修饰的⽅法

2.类属性⽅式,创建值为property对象的类属性

当使⽤类属性的⽅式创建property属性时, 经典类 和 新式类 ⽆区别

class Foo(object):
    def get_bar(self):
        print("getter...")
        return "laowang"

    def set_bar(self,value):
        print("setter...")
        return "set value" + value
    def del_bar(self):
        print("deleter...")
        return "laowang"
    BAR = property(get_bar,set_bar,del_bar,"description...")
    
obj = Foo()
obj.BAR#自动调用第一个参数中定义的方法:get\_bar
obj.BAR = "alex"#自动跳用第二个参数中定义的方法:set_bar方法 并将"alex"当做参数传入
desc = Foo.BAR.__doc__#自动获取第四个参数中设置的值:descrepation
print(desc)
del obj.BAR#自动调用第三个参数中定义的方法:del_bar方法

property⽅法中有个四个参数
第⼀个参数是⽅法名,调⽤ 对象.属性 时⾃动触发执⾏⽅法
第⼆个参数是⽅法名,调⽤ 对象.属性 = XXX 时⾃动触发执⾏⽅法
第三个参数是⽅法名,调⽤ del 对象.属性 时⾃动触发执⾏⽅法
第四个参数是字符串,调⽤ 对象.属性.__doc__ ,此参数是该属性的描述信息

综上所述:
定义property属性共有两种⽅式,分别是【装饰器】和【类属性】,⽽【装饰器】⽅式针对经典类和新式类⼜有所不同。
通过使⽤property属性,能够简化调⽤者在获取数据的流程

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值