@property 装饰器是用来将一个类方法装饰成属性的装饰器,它可以将一个方法转化为只读属性,以方便用户对类的属性进行访问和修改。在使用 @property 装饰器时,可以通过给方法添加装饰器 @方法名.setter 来实现属性的修改。
@property 装饰器并不需要知道哪个变量是属性,而是通过方法的名称来实现对属性的访问和修改。
下面是一个示例代码,演示了如何使用 @property 装饰器来定义一个只读属性和一个可读可写属性。
class MyClass:
def __init__(self):
self._my_property = 0
@property
def my_property(self):
return self._my_property
@my_property.setter
def my_property(self, value):
self._my_property = value
# 创建对象
obj = MyClass()
# 访问只读属性
print(obj.my_property) # 输出:0
# 修改可读可写属性
obj.my_property = 10
print(obj.my_property) # 输出:10
在上面的示例中,@property 装饰器将 my_property 方法装饰成只读属性。在访问 obj.my_property 时,实际上是调用了 my_property 方法来获取属性值。
而通过 @my_property.setter 装饰器,可以实现对 my_property 属性的修改。在调用 obj.my_property = 10 时,实际上是调用了 my_property 方法来设置新的属性值。