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 方法,使得你能够对属性进行赋值时执行一些逻辑。

相关推荐
哆啦A梦的口袋呀7 分钟前
基于Python学习《Head First设计模式》第六章 命令模式
python·学习·设计模式
努力搬砖的咸鱼9 分钟前
从零开始搭建 Pytest 测试框架(Python 3.8 + PyCharm 版)
python·pycharm·pytest
Calvex12 分钟前
PyCharm集成Conda环境
python·pycharm·conda
一千柯橘24 分钟前
python 项目搭建(类比 node 来学习)
python
sduwcgg28 分钟前
python的numpy的MKL加速
开发语言·python·numpy
大模型真好玩30 分钟前
可视化神器WandB,大模型训练的必备工具!
人工智能·python·mcp
东方佑31 分钟前
使用 Python 自动化 Word 文档样式复制与内容生成
python·自动化·word
钢铁男儿37 分钟前
Python 接口:从协议到抽象基 类(定义并使用一个抽象基类)
开发语言·python
databook1 小时前
当机器学习遇见压缩感知:用少量数据重建完整世界
python·机器学习·scikit-learn
M1A11 小时前
Python数据结构操作:全面解析与实践
后端·python