属性 getter 和 setter 的装饰器
Property decorator for getter and setter
我对如何在这个 属性 装饰代码中获取和设置温度感到有点困惑。这是使用 属性 装饰器的正确方法吗?但是我不确定如何使用它。我可以调用 c.temperature 并将其 returns 设为初始值(0 或我用来实例化 class 的任何值),但之后我无法使用 set_temperature 设置温度().我查看了关于这个主题的几个 SO 答案,但可能错过了重点。
class Celsius:
def __init__(self, temperature=0):
self._temperature = temperature
def to_f(self):
return self._temperature * 1.8 + 32
@property
def temperature(self):
print "Celsius:get_temperature"
return self._temperature
@temperature.setter
def temperature(self, value):
if value < -273:
raise ValueError("Temperature below -273 is impossible")
print "Celsius:set_temperature"
self._temperature = value
A 属性 让您可以挂钩属性访问,并 设置 属性。当您分配给属性时调用 setter:
c = Celsius(20)
c.temperature = 40
但是请注意,在 Python 2 中,您需要继承 object
才能使 属性 工作:
class Celsius(object):
演示:
>>> c = Celsius(20)
>>> c.temperature
Celsius:get_temperature
20
>>> c.temperature = 40
Celsius:set_temperature
>>> c.temperature
Celsius:get_temperature
40
我对如何在这个 属性 装饰代码中获取和设置温度感到有点困惑。这是使用 属性 装饰器的正确方法吗?但是我不确定如何使用它。我可以调用 c.temperature 并将其 returns 设为初始值(0 或我用来实例化 class 的任何值),但之后我无法使用 set_temperature 设置温度().我查看了关于这个主题的几个 SO 答案,但可能错过了重点。
class Celsius:
def __init__(self, temperature=0):
self._temperature = temperature
def to_f(self):
return self._temperature * 1.8 + 32
@property
def temperature(self):
print "Celsius:get_temperature"
return self._temperature
@temperature.setter
def temperature(self, value):
if value < -273:
raise ValueError("Temperature below -273 is impossible")
print "Celsius:set_temperature"
self._temperature = value
A 属性 让您可以挂钩属性访问,并 设置 属性。当您分配给属性时调用 setter:
c = Celsius(20)
c.temperature = 40
但是请注意,在 Python 2 中,您需要继承 object
才能使 属性 工作:
class Celsius(object):
演示:
>>> c = Celsius(20)
>>> c.temperature
Celsius:get_temperature
20
>>> c.temperature = 40
Celsius:set_temperature
>>> c.temperature
Celsius:get_temperature
40