我正在尝试按照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 value
和Setting value
打印语句也可见。 property
某种程度上无法正常工作吗?
答案 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