我是Python的新手...正在尝试使用Descriptor编写一些代码,并在下面的代码下运行以将华氏温度更改为摄氏温度。
但是我没有得到确切的结果。可以帮忙吗,如何运作?

尝试以下代码

import sys
import os

class Celsius:
    def __get__(self, obj, owner):
        return self.celsius

    def __set__(self, obj, value):
        self.celsius = (value-32)*5/9

class Temperature:
    celsius = Celsius()

    def __init__(self, f):
        self.fahrenheit = f

t1 = Temperature(32)
t1.celsius = 0

if __name__ == "__main__":
        t1 = Temperature(int(input()))
        print(t1.fahrenheit, t1.celsius)


预期结果:(212,100.0)(根据公式)
实际结果:(212,-17.77777777777778)
如何计算-17?

最佳答案

您不应将t1.celsius初始化为0,而应使用celsius中的Temperature.__init__ setter:

class Temperature:
    celsius = Celsius()

    def __init__(self, f):
        self.fahrenheit = self.celsius = f


演示:https://repl.it/repls/UsableSunnyConfig

10-07 14:23