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)  # 访问为属性

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

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

相关推荐
月光船幽幽4 小时前
门控函数SHS阈值与调制机制解析
人工智能·python·算法
测试19984 小时前
2026全新软件测试面试八股文(含答案+文档)
自动化测试·软件测试·python·测试工具·面试·职场和发展·测试用例
Zane19944 小时前
map 比推导式快"是真的吗?一文讲透 map、filter、reduce 与 lambda 的真实性能与设计取舍
后端·python
过期的秋刀鱼!4 小时前
带替换的采样
人工智能·python·算法·决策树·机器学习
Python私教4 小时前
AI Agent 可观测性不只是日志:一套可回放的多步执行链
人工智能·后端·python
Python私教5 小时前
模型越强越不需要 Skills?我把 AI 编程能力拆成 4 层
人工智能·后端·python
databook5 小时前
如何快速构建一个数据科学应用?从零到上线
python·机器学习·scikit-learn
上下求索,莫负韶华5 小时前
切面学习笔记
笔记·python·学习
2301_806709386 小时前
国内知名的生活水箱制造厂有哪些
python·生活
学掌门6 小时前
超级菜鸟怎么学习数据分析?
python·学习·数据分析