Python 中的 @property 是什么,它如何运作?

在 Python 中,@property 是一个装饰器,用于将类中的方法转换为属性访问的方式。这样可以在不改变调用方式的情况下,添加 getter、setter 和 deleter 的功能,从而实现对属性的控制。
工作原理

    创建属性: 使用 @property 装饰器将一个方法变为一个属性。这个方法通常被称为 getter。

    定义 setter: 使用 @.setter 装饰器,可以为属性定义一个 setter 方法,从而允许对属性进行赋值。

    定义 deleter: 使用 @.deleter 装饰器,可以为属性定义一个 deleter 方法,从而允许删除属性。

示例

python

class Circle:
    def __init__(self, radius):
        self._radius = radius

    @property
    def radius(self):
        return self._radius

    @radius.setter
    def radius(self, value):
        if value < 0:
            raise ValueError("Radius cannot be negative")
        self._radius = value

    @property
    def area(self):
        return 3.14159 * (self._radius ** 2)

# 使用
circle = Circle(5)
print(circle.radius)  # 5
print(circle.area)    # 78.53975

circle.radius = 10
print(circle.area)    # 314.159

# circle.radius = -1  # 会抛出 ValueError

优点

    封装:可以隐藏内部实现细节。
    验证:可以在设置属性值时进行验证。
    只读属性:可以创建只读属性,限制外部对某些数据的直接访问。

使用 @property 是一种优雅的方式来管理类中的属性,使代码更清晰且易于维护。

请使用浏览器的分享功能分享到微信等