property
使用property相当于把这个函数作为一个属性而不是方法,调用的时候获得的是一个只读的属性
一般用于外部访问内部参数,并保护内部参数不被外部更改(只读)
既然有只读的方法,当然也有对应的setter方法
setter的前面必须要先property
得先有属性才能做setter
这种的另一个好处是写得方便,直接用赋值的就行,然后在处理数据的时候对其进行验证处理,比方说看它是不是符合你这个变量因有的格式,是否为空,是否纯数字之类的
from copy import deepcopy
class TempDemo:
def __init__(self):
self.__aaa = 0
self.__bbb = 1
@property
def aaa(self):
return self.__aaa
@aaa.setter
def aaa(self, value):
value_temp = deepcopy(value)
"""对传入的数据进行验证处理"""
self.__aaa = value_temp
@property
def bbb(self):
return self.__bbb
@bbb.setter
def bbb(self, value):
if isinstance(value, int):
value_temp = deepcopy(value)
"""对传入的数据进行验证处理"""
self.__bbb = value_temp
else:
raise ValueError("不是整数")
if __name__ == '__main__':
temp = TempDemo()
print(temp.aaa)
print(temp.bbb)
temp.aaa = 5
temp.bbb = 9
print("aaa", temp.aaa)
print("bbb", temp.bbb)
标签:aaa,temp,self,bbb,value,property
From: https://www.cnblogs.com/code3/p/17350295.html