Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对在类中调用方法感到困惑(PYTHON)_Python_Class_Methods_Return_Add - Fatal编程技术网

对在类中调用方法感到困惑(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