示例代码如下
class Tes:
list_name = ["DO","TP","TN","NH3","Tem",] #类的属性
def __init__(self,show):
self.__show = show
@property #将方法转化为属性
def show(self): #将方法转换为属性后,通过该语句定义方法
return self.__show #返回私有属性的值
@show.setter #私有属性是不可以修改的,通过设置setter方法,可以让属性可以修改
def show(self,i):
if i in Tes.list_name:
self.__show = "您选择分析的数据是"+i
else:
self.__show = "您选择分析的因子不支持分析!"
a1 = Tes("") #在执行类时,首先需要创造类的实例,不然会直接报错
print("当前可分析的因子如下所示:")
print(Tes.list_name) #调用类中的属性,展示出有哪些类中有哪些属性
a1.show=input("请输入下个分析的因子")
print("执行类的结果为:",a1.show)
执行结果,输入的内容不在类的属性中
"D:\program files\Python39\python.exe" H:/python/LXexcel/test.py
当前可分析的因子如下所示:
['DO', 'TP', 'TN', 'NH3', 'Tem']
请输入下个分析的因子SSS
执行类的结果为: 您选择分析的因子不支持分析!
进程已结束,退出代码为 0
执行结果,输入的内容在类的属性中
"D:\program files\Python39\python.exe" H:/python/LXexcel/test.py
当前可分析的因子如下所示:
['DO', 'TP', 'TN', 'NH3', 'Tem']
请输入下个分析的因子TN
执行类的结果为: 您选择分析的数据是TN
进程已结束,退出代码为 0
总结:
自己理解,不确定对不对:
直接使用装饰器@property,就是直接将方法转化为属性,可以通过实例中传递属性的参数,实现想要的计算。而对于私有属性,私有属性是不可修改的,通常只有只读权限,如果需要修改,需要先将私有属性的方法转换为属性,然后通过装饰器@方法名.setter 将其设置为方法,让其属性可以修改