property
property([fget[, fset[, fdel[, doc]]]])
fget—获取属性值的函数------对象.属性时自动触发
fset—设置属性值的函数------对象.属性=xxx时自动触发
fdel—删除属性值的函数------del 对象.属性时自动触发
#property(获取,设置,删除)
class Test():
def __init__(self): #构造函数
self.num="aaaa"
def set_value(self,value): #设置
self.num=value
print(self.num)
def get_value(self): #获取
print(self.num)
return self.num
def del_value(self): #删除
del self.num
print("del")
#property(获取,设置,删除)
value=property(get_value,set_value,del_value)
#test.value将触发 get_value
#test.value= value 将触发 set_value
#del test.value 触发 del_value。
test=Test()
test.value
test.value=6
del test.value
运行结果
aaaa
6
del
property装饰器
class Test():
def __init__(self):
self.num = "init"
# 创建一个获取函数,函数名就是属性值,@方法名
@property
def value(self):
return self.num
# 创建一个设置函数,@方法名.setter
@value.setter
def value(self, value):
self.num = value
# 创建一个删除函数,@方法名.deleter
@value.deleter
def value(self):
print("delete")
test = Test()
print(test.value)
a1 = test.value = 6
print(a1)
del test.value
运行结果
init
6
delete