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方法