Python中的@property

  在 Python 中,@property 是一种装饰器,用于将一个方法转换成只读属性。通过使用 @property 装饰器,你可以定义一个类的方法,使其在访问时可以像访问属性一样,而不是通过方法调用。

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

复制代码
class Circle:
    def __init__(self, radius):
        self._radius = radius  # 使用下划线表示属性是私有的

    @property
    def radius(self):
        """获取圆的半径."""
        return self._radius

    @property
    def diameter(self):
        """获取圆的直径."""
        return 2 * self._radius

    @property
    def area(self):
        """获取圆的面积."""
        return 3.14 * self._radius ** 2

# 示例用法
circle = Circle(5)
print("半径:", circle.radius)  # 访问为属性
print("直径:", circle.diameter)  # 访问为属性
print("面积:", circle.area)  # 访问为属性

  在这个例子中,radius、diameter 和 area 方法被使用 @property 装饰器标记为只读属性。这意味着你可以像访问属性一样,直接通过 circle.radius、circle.diameter 和 circle.area 访问它们,而不需要使用括号调用方法。

  @property 常用于提供对类的内部变量的安全访问,同时允许在访问时执行一些额外的逻辑。此外,你还可以使用 @property 的 setter 方法,使得你能够对属性进行赋值时执行一些逻辑。

相关推荐
怕浪猫16 小时前
RAG 面试 6 连问,从原理到优化全部覆盖
python·算法·面试
高洁0116 小时前
具身智能中的世界模型训练
人工智能·python·深度学习·机器学习·transformer
无线通信科研笔记16 小时前
IEEE TVT 2026 论文精读与完整复现|相位误差如何重塑近场 RIS 的幅相响应
论文阅读·人工智能·python·算法·论文笔记
朝朝辞暮i16 小时前
VLA 系统学习第 1 课:VLA 到底在干什么?
人工智能·python·计算机视觉·vla
2601_9628857217 小时前
如何用 Python 自动识别股票的支撑位与压力位?
开发语言·python
北冥有鱼被烹17 小时前
VCSEL全景解析:与光模块NPO CPO的关系、市场量化分析与产业链影响
python
caoerzhong18 小时前
中小企业上 WMS 该先上哪几块:JeeWMS 开源 Java 仓库管理系统的分批上线清单
java·python·开源
正在走向自律18 小时前
AI数据分析与可视化:从基础到应用实践
服务器·人工智能·python·机器学习·数据分析·pandas
databook18 小时前
从手动检查到自动监控:一个数据质量工作流的实现
后端·python·数据分析
北冥有鱼被烹21 小时前
砷化镓与磷化铟:光模块的地基——从化学键到AI缺货潮的底层逻辑
人工智能·python