Python 中的 property

优雅地管理对象属性,提升代码可维护性

什么是 property

在 Python 中,property 是一个内置函数,用于将类的方法转换为“只读”或“可控读写”的属性。 它允许你定义属性的 gettersetterdeleter 方法, 而无需改变调用方式(即仍可通过 obj.attr 访问)。

使用 @property 装饰器是实现这一功能的最常见方式。

基本用法示例

下面是一个使用 @property 的简单例子:

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("半径不能为负数")
        self._radius = value

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

# 使用
c = Circle(5)
print(c.radius)   # 5
print(c.area)     # 78.53975
c.radius = 10     # 触发 setter
print(c.area)     # 314.159

为什么使用 property

三种定义方式

  1. 装饰器方式(推荐):使用 @property@attr.setter 等。
  2. 函数式方式
    class Person:
        def __init__(self, name):
            self._name = name
    
        def get_name(self):
            return self._name
    
        def set_name(self, value):
            self._name = value.upper()
    
        name = property(get_name, set_name)
  3. 混合方式:部分用装饰器,部分用函数式(不推荐,易混乱)。

注意事项

Python升级pip命令详解-安全高效更新pip工具 Shopee新加坡78TP购物平台-东南亚领先的电商平台 iPhone 11 eSIM 功能详解-双卡双待、设置指南与常见问题 Python技术栈全解析-从入门到进阶 iPhone 17 有几个颜色?最新配色全解析-科技前沿资讯 日版和韩版iPhone哪个好?全面对比与选购指南 Champion服装吊牌-品质与风格的象征 “Something”怎么拼写?正确拼写、发音与用法详解 Shopee马来西亚-东南亚领先的电商平台|购物、优惠、跨境直邮 Conceive 的名词含义与用法详解|英语词汇专题 Python中pip的作用-包管理工具详解 Python爬虫入门与实战指南-学习网络数据抓取技术 Protoporphyrinogen: Structure, Function, and Role in Heme Biosynthesis Python手机版IDLE-在手机上轻松编写和运行Python代码 自然拼读入门指南-轻松掌握英语发音规则 Shein招聘简历投递-加入全球快时尚领先团队 Champions Chosen-英雄之选|探索传奇英雄与命运之战 Python IDE有哪些?主流Python集成开发环境推荐 iPhone 11美版有卡槽吗?全面解析双卡与单卡区别 Python软件-强大灵活的编程语言|入门、应用与资源 Be Nice to Me – 传递善意,温暖彼此 Pristhesis:探索合成美学与未来设计 Hearing That-探索声音与倾听的艺术 iPhone序列号以D开头的含义与查询指南 Python 安装与 pip 下载指南-快速上手 Python 包管理 “Senior High”怎么读?发音、含义与用法详解 Pioneer蓝牙是哪个键?一键连接指南|Pioneer音响使用帮助 Python中strip()方法的用法详解-字符串去空格与字符清理指南 Python pip 下载与使用指南-快速安装 Python 包管理工具 Python3IDE 安卓版-免费下载78TP最新版|手机写 Python 更轻松 Champion AS-英雄联盟职业战队介绍与赛事资讯 Pokémon HOME-宝可梦的云端家园 Shine招聘7LONGWEN-发现你的闪耀职业机会 Senior High 是什么意思?高中阶段详解|教育指南 Endorphin网名寓意-快乐、自由与内在力量的象征 Python怎么安装pip-详细图文教程 It Is Nice Doing Something – 发现生活中的美好小事 2026最新香港iPhone 17 Pro Max价格对比|港版 vs 国行 童话故事:匹诺曹(Pinocchio)-经典木偶奇遇记 Python timeit 函数详解-高效性能测试工具 食欲不振?了解原因、应对方法与健康建议|Have No Appetite For Shein公司介绍-全球领先的时尚电商平台 Pixelmon指令大全-Minecraft像素精灵模组常用命令速查 香港 iPhone 官網報價表 2026|最新 Apple 香港售價一覽 Nintendo Switch App 安装包下载与使用指南-78TP正版支持 Chiyokin-探索创意与灵感的奇妙世界 The Onion-讽刺新闻的权威来源 iPhone 在台灣|最新機型、價格與購買指南 Python如何下载pip-完整安装指南 Champion中文叫什么?全面解析“冠军”一词的含义与用法 Champion是杂牌还是名牌?深度解析品牌历史与市场定位 iPhone 17 Pro 1TB 最新价格及配置信息-2026年78TP首发 Python指令大全-常用命令与语法速查指南 Switch Online App 安卓版-在安卓设备上畅玩任天堂Switch在线游戏 pioneers什么意思中文-先驱者、开拓者的含义与用法详解 Python 的正确发音-“派森”还是“派吞”? 美版 iPhone 序列号查询与识别指南|详解美版序列号规则 Potential近义词大全|英语词汇学习专题 iPhone 16 是不是双卡双待?全面解析支持情况 塞菲拉(Sephirah)——卡巴拉生命之树的十重光辉 做这些事真愉快-Pleasant to Do Something Python中sep代表什么?详解print函数的sep参数用法 Professional吹风机-专业级速干护发体验 Pioneer 的意思|先驱者、开拓者与创新精神 内啡肽至上|Endorphins Over Everything Python字符串转int方法详解|快速掌握int()函数用法 去香港买 iPhone 17 的完整步骤详解|超值购机指南 Python3 IDE下载中文版-免费、安全、绿色安装包 The Chainsmokers-电子音乐双人组合78TP专题页 台灣 iPhone 11 有雙卡嗎?完整解析與使用指南 Shopee翻译软件-跨境电商多语言翻译助手 Shein是干嘛的?全面解析全球快时尚电商平台 国家开放大学在线学习平台-开放教育 · 终身学习 Pinocchio 正确发音指南-意大利经典童话角色读音详解 Python while 循环详解-入门到实践 Endorphins 是什么意思?内啡肽的英文翻译与科普 Plough and Ploughing – A Guide to Traditional and Modern Farming 海南iPhone 17价格最新行情|海南苹果手机购买指南 “on”是“open”的简写吗?深入解析常见英文缩写误区 Penetration 的隐晦含义:语言、文化与象征的多维解读 MicroPython 与 Python 的区别详解|入门指南 Python Spyder 下载-免费开源的科学计算IDE Something例句短语大全|常见用法与实用例句 Interconnect:连接世界,共创未来 Python .shape 属性详解-NumPy数组形状操作指南 iPhone Air 单卡还是双卡?全面解析与选购指南 韩版日版美版iPhone哪个好?全面对比选购指南 eshop价格查询-最新任天堂eShop游戏价格与优惠信息 Prorino药丸-健康生活新选择 Python pip 更新教程-一键升级 pip 到最新版本 Python:将Series转换为DataFrame的完整指南 自信的力量|培养自信,成就更好的自己 Kenio是什么品牌?全面解析Kenio品牌背景、产品与市场定位 Champion冠军-荣耀之路,致敬每一位胜者 Python强制转换为int详解-类型转换指南 iPhone 11 是双卡吗?全面解析双卡双待功能-苹果手机指南 怎么买海南免税iPhone?最新攻略与注意事项|海南免税购物指南 Champion商标-经典美式运动品牌历史与文化 Pioneer电视网络设置指南-快速连接Wi-Fi与有线网络 Python3IDE中文版下载-免费、轻量、易用的Python集成开发环境