【发布时间】:2015-12-15 13:07:04
【问题描述】:
我目前正试图围绕 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(旧)。也就是说,摄氏度的值尚未更新。
我该如何解决这个问题?任何指针都受到高度赞赏。
【问题讨论】:
标签: python properties attributes