property装饰器
前言:若是对装饰器不甚了解可以参考:
https://blog.csdn.net/xdc1812547560/article/details/107579705
我们可以使⽤@property装饰器来创建只读属性,@property装饰器会将⽅法转换为相同名称的只读属性,可以与所定义的属性配合使⽤,这样可以防⽌ 属性被修改
class Myclass():
def __init__(self,name):
self.name = name
@property
def noe(self):
print('程序运行成功')
return self.name
my = Myclass('您好')
print(my.noe())
TypeError: 'str' object is not callable
在添加了@property之后,我们发现程序运行报错了,为什么呢,因为@property将方法转换为相同名称的只读属性
class Myclass():
def __init__(self,name):
self.name = name
@property
def noe(self): #getter方法
print('程序运行成功')
return self.name
my = Myclass('您好')
print(my.noe)
程序运行成功
您好
在去掉括号的时候,我们发现又可以正常运行了
若想修改则添加setter方法,方法上添加setter装饰器,@方法名.setter
方法名与getter方法名相同
class Myclass():
def __init__(self,name):
self.name = name
@property
def noe(self): #getter方法
print('程序运行成功')
return self.name
@noe.setter
def one(self,name): #setter方法
self.name = name
my = Myclass('您好')
my.name = '欢迎'
print(my.noe)
程序运行成功
欢迎