可以用装饰器来实现。
通过装饰器@property
,我们可以不定义没有必要的 get_temperature()
和set_temperature()
,这样还避免了污染命名空间。使用方式如下:
class Celsius:
def __init__(self, temperature = 0):
self._temperature = temperature
def to_fahrenheit(self):
return (self.temperature * 1.8) + 32
# Getter 装饰器
@property
def temperature(self):
print("Getting value")
return self._temperature
# Setter 装饰器
@temperature.setter
def temperature(self, value):
if value < -273:
raise ValueError("Temperature below -273 is not possible")
print("Setting value")
self._temperature = value
你可以使用装饰器,也可以使用之前的方法,完全看个人喜好。但使用装饰器应该是更加 Pythonic 的方法吧。
参考
Python @property
(本文完)