对在类中调用方法感到困惑(PYTHON)
所以我有一个处理温度的类,它是非常基本的,但是由于某种原因,摄氏到华氏的转换不能在类的某个区域返回一个正确的结果,如果不是这样的话 我正在编写添加方法,为了添加两种不同类型的温度,必须对它们进行转换。我有一种在摄氏度和华氏度之间切换的方法,当我在测试程序中这样做时,它就起作用了:对在类中调用方法感到困惑(PYTHON),python,class,methods,return,add,Python,Class,Methods,Return,Add,所以我有一个处理温度的类,它是非常基本的,但是由于某种原因,摄氏到华氏的转换不能在类的某个区域返回一个正确的结果,如果不是这样的话 我正在编写添加方法,为了添加两种不同类型的温度,必须对它们进行转换。我有一种在摄氏度和华氏度之间切换的方法,当我在测试程序中这样做时,它就起作用了: Testing celsius method: Converting to celsius... Result: Temperature: -12.222222222222221 degrees C Testing
Testing celsius method:
Converting to celsius...
Result: Temperature: -12.222222222222221 degrees C
Testing fahrenheit method:
Converting back to fahrenheit...
Result: Temperature: 10.0 degrees F
但是,如果我尝试使用它添加两种不同的类型(额外的打印以查看它的功能):
它将打印出它将10摄氏度转换为68华氏度(?)
输出:
Testing addition
Temp 2 = Temperature: 20 degrees C
Performing temp1 + temp2...
Temperature: 10 degrees F
Temperature: 20 degrees C
Temperature: 10 degrees F
Temperature: 68.0 degrees F
Temperature: 78.0 degrees F
这是华氏温度法:
def fahrenheit( self ):
if self.__scale == 'F':
return Temperature( self.__magnitude, 'F')
elif self.__scale == 'C':
f = ((self.__magnitude * 9) / 5) + 32
return Temperature( f, 'F' )
据我所知,它工作得非常好
摄氏度,几乎相同:
def celsius( self ):
if self.__scale == 'C':
return Temperature( self.__magnitude, 'C')
elif self.__scale == 'F':
c = ((self.__magnitude - 32) * 5) / 9
return Temperature( c, 'C' )
我一辈子都搞不清楚为什么会发生这种情况:(您似乎误读了自己程序的输出。输出的值是:
Temperature: 10 degrees F # self
Temperature: 20 degrees C # other
Temperature: 10 degrees F # temp_1 = self.fahrenheit()
Temperature: 68.0 degrees F # temp_2 = other.fahrenheit()
Temperature: 78.0 degrees F # The sum of the above two
因此,10°F变为10°F,20°C变为68°F,这是正确的。我想,原因是整数运算。试试
((self.\u震级-32)*5)/9.0
和((self.\u震级*9)/5.0)+32
。我做了一个简单的测试(没有课上的东西,只是数学),它给出了正确的结果
Temperature: 10 degrees F # self
Temperature: 20 degrees C # other
Temperature: 10 degrees F # temp_1 = self.fahrenheit()
Temperature: 68.0 degrees F # temp_2 = other.fahrenheit()
Temperature: 78.0 degrees F # The sum of the above two