装饰器(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)