我試圖按照教程上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
不知何故無法正常工作?
的Python 2或Python 3? – khelwood
通過設置c.temperature,你實際上並沒有調用該方法set_temperature但是方法'C .__ setattr__'有以下爲參數的C .__ SETATTR __(「溫度」,100)。所以,你要覆蓋什麼是'__setattr__'方法 – dnalow
如果是Python 2中,問題是,你的類不從'object'繼承,因此它是一箇舊式的類。將第一行更改爲'class Celsius(object):' – khelwood