@property 装饰器的用法
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
好处:用点号访问属性语法,但可添加验证、计算和监控逻辑。