@property装饰器

装饰器(decorator)可以给函数动态加上功能,对于类的方法,装饰器一样起作用。

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

@property 的语法格式如下:

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

 

对实例属性操作的时候,该属性是不直接暴露的,而是通过getter和setter方法来实现的。还可以定义只读属性,只定义getter方法,不定义setter方法就是一个只读属性:

class Rect:
    def __init__(self,area):
        self.__area = area

    @property
    def area(self):
        return self.__area

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

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


rect = Rect(30)
#直接通过方法名来访问 area 方法
print("矩形的面积是:",rect.area)

# 为 Rect 类中的 area 方法添加 setter 方法 后
rect.area = 90
print("修改后的面积:",rect.area)

del rect.area
print("删除后的area值为:",rect.area)

 

上一篇:gui设计


下一篇:设计点类(Point)和矩形类(Rect)新手小白,C++题目,急求,在线等,各位大神帮帮忙.