关于python中的属性类

时间:2017-01-05 12:35:38

标签: python properties python-2.x

我在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()

1 个答案:

答案 0 :(得分:4)

在Python 2中,class Celsius:声明了一个旧式的类,其属性不起作用。使用class Celsius(object):