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
数据验证:在设置属性值时进行有效性检查
计算属性:根据其他属性动态计算值
访问控制:控制对敏感属性的访问权限
延迟加载:只在需要时才计算或获取属性值
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)
属性方法应该保持简单,避免复杂的计算或IO操作
不要过度使用 property,对于简单的属性访问直接使用公共属性即可
property 不能用于实例方法,只能用于实例属性
property 还可以用于实现:
只读属性(只定义 getter)
只写属性(只定义 setter)
缓存属性(在 getter 中进行缓存)
观察者模式(在 setter 中通知观察者)
通过合理使用 property,可以大大提高代码的可维护性和安全性。