我目前正试图围绕Python属性进行包装。Python - 属性和更新属性值
假设我要在摄氏和凯尔文之间转换。我有一个类学位,处理这些计算:
class Degrees(object):
def __init__(self, celsius):
self.celsius = celsius
#Celsius
def set_celsius(self, celsius):
self._celsius = celsius
def get_celsius(self):
return self._celsius
celsius = property(fget=get_celsius, fset=set_celsius)
#Kelvin
def set_kelvin(self, kelvin):
self._kelvin = kelvin
def get_kelvin(self):
return self._kelvin
kelvin = property(fget=get_kelvin, fset=set_kelvin)
def to_kelvin(self):
self.kelvin = self.celsius + 273.15
return self.kelvin
def to_celcius(self):
self.celsius = self.kelvin - 273.15
return self.celsius
然后,我用的是以下几点:
deg = Degrees(20) #Set celsius to 20
print ("In Kelvin {0:.3f}.").format(deg.to_kelvin()) #Works
deg.kelvin = 300 #Should alter celsius
print ("New celsius {0}").format(deg.celsius)
输出:
>>>> New celsius 20
在过去的打印我期待26.850(新的摄氏度值)。相反,我得到20(老)。也就是说,摄氏温度值尚未更新。
我该如何解决这个问题?任何指针都非常感谢。