美文网首页
python --@property装饰器详解

python --@property装饰器详解

作者: 有事没事扯扯淡 | 来源:发表于2019-08-01 16:36 被阅读0次

    既要保护类的封装特性,又要让开发者可以使用“对象.属性”的方式操作操作类属性,除了使用 property() 函数Python还提供了 @property 装饰器。通过 @property 装饰器,可以直接通过方法名来访问方法,不需要在方法名后添加一对“()”小括号。

    @property 的语法格式如下:

    @property
    def 方法名(self)
        代码块
    

    例如,定义一个矩形类,并定义用 @property 修饰的方法操作类中的 area 私有属性,代码如下:

    class Rect:
        def __init__(self,area):
            self.__area = area
        @property
        def area(self):
            return self.__area
    rect = Rect(30)
    #直接通过方法名来访问 area 方法
    print("矩形的面积是:",rect.area)
    

    上面程序中,使用 @property 修饰了 area() 方法,这样就使得该方法变成了 area 属性的 getter 方法。需要注意的是,如果类中只包含该方法,那么 area 属性将是一个只读属性。也就是说,在使用 Rect 类时,无法对 area 属性重新赋值,即运行如下代码会报错:

    rect.area = 90
    print("修改后的面积:",rect.area)
    

    而要想实现修改 area 属性的值,还需要为 area 属性添加 setter 方法,就需要用到 setter 装饰器,它的语法格式如下:

    @area.setter
    def area(self, value):
        self.__area = value
    

    除此之外,还可以使用 deleter 装饰器来删除指定属性,其语法格式为:

    @area.deleter
    def area(self):
        self.__area = 0
    

    [参考链接]
    http://c.biancheng.net/view/2270.html

    相关文章

      网友评论

          本文标题:python --@property装饰器详解

          本文链接:https://www.haomeiwen.com/subject/kqlcdctx.html