分享

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

 天上飞鸡 2022-04-05

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

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

class Goods:@propertydef price(self):print("@property")@price.setterdef price(self,value):print("@price.setter")@price.deleterdef 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" + valuedef del_bar(self):print("deleter...")return "laowang"BAR = property(get_bar,set_bar,del_bar,"description...")obj = Foo()obj.BAR#自动调用第一个参数中定义的方法:get\_barobj.BAR = "alex"#自动跳用第二个参数中定义的方法:set_bar方法 并将"alex"当做参数传入desc = Foo.BAR.__doc__#自动获取第四个参数中设置的值:descrepationprint(desc)del obj.BAR#自动调用第三个参数中定义的方法:del_bar方法

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

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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多