我在python中寻找property
的教程时看到了如下的python片段:
class Celsius:
def __init__(self, temperature = 0):
self.temperature = temperature
def to_fahrenheit(self):
return (self.temperature * 1.8) + 32
def get_temperature(self):
print("Getting value")
return self._temperature
def set_temperature(self, value):
if value < -273:
raise ValueError("Temperature below -273 is not possible")
print("Setting value")
self._temperature = value
temperature = property(get_temperature,set_temperature)
c = Celsius()
作者说运行此代码段会得到以下输出
Setting value
,因为在Celsius
的实例(c
)的构建阶段,调用了类成员setter
的{{1}},即temperature
。这种解释是有道理的,但是在我自己的计算机中,运行此片段后我得不到任何输出。这里有什么不对吗?我的python版本是Ubuntu 14.04中的set_temperature()
。
答案 0 :(得分:4)
在Python 2中,class Celsius:
声明了一个旧式的类,其属性不起作用。使用class Celsius(object):
。