Python中property属性的概论和使用方法
程序员文章站
2022-05-29 08:13:05
property属性 概念: 定义一个方法但是使用装饰器property,只可以有一个self形参 可以用这样的属性动态的获取属性的值 定义方式(经典类) 定义方式(新式类) get @property 0 set @price.setter del @price.deleter` 使用proper ......
property属性
- 概念:
- 定义一个方法但是使用装饰器property,只可以有一个self形参
- 可以用这样的属性动态的获取属性的值
- 定义方式(经典类)
class fun(): @property def size(self): return 100 fun = fun() print(fun.size)
100
- 定义方式(新式类)
class fun(): def __init__(self): self.num = 0 @property def price(self): print("get @property") return self.num @price.setter def price(self, value): self.num = value print("set @price.setter") @price.deleter def price(self): print("del @price.deleter") obj = fun() print(obj.price) # 可以获取价格,调用property装饰器 obj.price = 100 # 修改价格,调用price.setter装饰器 del obj.price # 删除价格,调用price.deleter装饰器
get @property 0 set @price.setter del @price.deleter`
- 使用property方法来创建property属性
可以使用proerty来替代原有的封装的set和get方法
#coding=utf-8 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__ # 自动获取第四个参数中设置的值:description... print(desc) del obj.bar # 自动调用第三个参数中定义的方法:del_bar方法