Python 的内置函数 property

发布于:2025-07-04 ⋅ 阅读:(18) ⋅ 点赞:(0)

Python 内建函数列表 > Python 的内置函数 property

Python 的内置函数 property() 是一个非常重要的工具,用于管理类属性的访问。它提供了一种优雅的方式来定义属性访问器(getter)、设置器(setter)和删除器(deleter)方法,同时保持简洁的接口。

基本用法

class Person:
    def __init__(self, name):
        self._name = name
    
    @property
    def name(self):
        """获取姓名"""
        return self._name
    
    @name.setter
    def name(self, value):
        if not isinstance(value, str):
            raise ValueError("姓名必须是字符串")
        self._name = value
    
    @name.deleter
    def name(self):
        print("删除姓名")
        del self._name

典型应用场景

  1. 数据验证:在设置属性值时进行有效性检查
  2. 计算属性:根据其他属性动态计算值
  3. 访问控制:控制对敏感属性的访问权限
  4. 延迟加载:只在需要时才计算或获取属性值

示例代码

class Person:
    def __init__(self, name):
        self._name = name
    
    @property
    def name(self):
        """获取姓名"""
        return self._name
    
    @name.setter
    def name(self, value):
        if not isinstance(value, str):
            raise ValueError("姓名必须是字符串")
        self._name = value
    
    @name.deleter
    def name(self):
        print("删除姓名")
        del self._name

使用装饰器的优势

使用 @property 装饰器比直接使用 property() 函数更为简洁直观。实际上,装饰器语法:

@property
def name(self):
    ...

等同于:

name = property(name)

注意事项

  1. 属性方法应该保持简单,避免复杂的计算或IO操作
  2. 不要过度使用 property,对于简单的属性访问直接使用公共属性即可
  3. property 不能用于实例方法,只能用于实例属性

进阶用法

property 还可以用于实现:

  • 只读属性(只定义 getter)
  • 只写属性(只定义 setter)
  • 缓存属性(在 getter 中进行缓存)
  • 观察者模式(在 setter 中通知观察者)

通过合理使用 property,可以大大提高代码的可维护性和安全性。


网站公告

今日签到

点亮在社区的每一天
去签到