property装饰器详写

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)
程序运行成功
欢迎

猜你喜欢

转载自blog.csdn.net/xdc1812547560/article/details/107701411
今日推荐