property() 属性描述符

最后更新:2026-09-22

property() 属性描述符

property(fget, fset, fdel, doc) 把方法封装为可像属性一样访问的对象;也可用 @property 装饰器。

分类内置函数
类型内置函数
Python 版本all

📝 语法

property(fget[, fset[, fdel[, doc]]])

⚙️ 参数

fget 可选读取属性值的函数(getter)。(默认值:None)
fset 可选设置属性值的函数(setter)。(默认值:None)
fdel 可选删除属性的函数(deleter)。(默认值:None)
doc 可选属性的文档字符串。(默认值:None)

返回值:返回 property 对象,一个可像普通属性一样访问的数据描述符。

▶ 示例

编辑下方代码,点击运行,在输出面板查看结果:

运行结果:

10
更多实战案例即将上线,敬请期待。

❓ 常见问题

Qproperty 有什么用?
A把方法包装成属性访问:obj.x 触发 getter 逻辑,调用不用加括号,还能在赋值时做校验(setter),实现“计算属性”和封装。
Q@property 与 @x.setter 怎么配合?
A@property 定义读取逻辑,@x.setter 定义赋值校验,如 c.x = 10 会走 setter;只定义 @property 不定义 setter 时,赋值抛 AttributeError: can't set attribute。
Qproperty 和普通方法有什么区别?
A访问方式不同(obj.x 而非 obj.x()),且 property 能拦截读取/赋值/删除三个操作,适合内部字段的封装与校验。
Q计算属性会缓存结果吗?
A不会,每次访问 obj.x 都重新执行 getter;需要缓存得自己实现(如 functools.cached_property)。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏