财产不按预期工作

时间:2016-10-04 11:26:20

标签: python

我正在尝试按照http://www.programiz.com/python-programming/property上的教程编写以下脚本:

class Celsius:
    def __init__(self, temperature = 0):
        self.temperature = temperature

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

print c.temperature
c.temperature = 100
print c.temperature

当我运行脚本时,我只看到两个温度值:

0
100

但是,我希望Getting valueSetting value打印语句也可见。 property某种程度上无法正常工作吗?

3 个答案:

答案 0 :(得分:2)

您尝试做的只适用于新式课程。要在Python 2中声明一个新式的类,你需要

class Celsius(object):

而不是

class Celsius:

在Python 3中,所有类都是新式的,因此普通class Celsius工作正常。

答案 1 :(得分:1)

代码应该按原样运行,但是您将Python 2语法与Python 3混合在一起。

如果您将类外的print语句转换为函数调用,则代码可以正常运行为有效的Python 3。

如果您将其作为Python 2代码运行,那么您必须从object继承您的类并保持其他所有内容。

选择一个。

答案 2 :(得分:1)

你需要定义类:

class Celsius(object):
    balabala
    balabala