ITPub博客

首页 > 应用开发 > Python > Python 中的 @property 是什么,它如何运作?

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

原创 Python 作者:mingtian66 时间:2024-10-31 14:36:53 0 删除 编辑

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

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

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

    定义 deleter: 使用 @<property_name>.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 是一种优雅的方式来管理类中的属性,使代码更清晰且易于维护。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70040412/viewspace-3044769/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2024-08-07

  • 博文量
    589
  • 访问量
    603012