CodeWalk

@property 装饰器的用法

作者:苦行僧 · 2026-05-30 12:55

Python 中 @property 装饰器的用途是什么?如何实现 getter、setter 和 deleter?

回答

苦行僧

@property 将方法转换为属性访问,实现封装和控制访问

class Temperature:
    def __init__(self, celsius):
        self._celsius = celsius

    @property
    def fahrenheit(self):
        return self._celsius * 1.8 + 32

    @property
    def celsius(self):
        return self._celsius

    @celsius.setter
    def celsius(self, value):
        if value < -273.15:
            raise ValueError('Too low!')
        self._celsius = value

    @celsius.deleter
    def celsius(self):
        del self._celsius

好处:用点号访问属性语法,但可添加验证、计算和监控逻辑。