Python 属性 将华氏温度转换为摄氏温度的问题,反之亦然

Python Property Problem which Converts Temperature from Fahrenheit to Celsius and Vice Versa

代码:-

class Celsius:
    def __get__(self, obj, owner):
        return self.__fahrenheit
    def __set__(self, obj, value):
        if not isinstance(value, int):
            raise TypeError("'fahrenheit' must be an integer.")
        self.__fahrenheit = value

class Temperature:
    fahrenheit = Celsius()
    celsius = 0.0
    def __init__(self,fahrenheit):
        self.fahrenheit = fahrenheit
        #Temperature.fahrenheit = Temperature.celsius + 32
        Temperature.celsius = float(self.fahrenheit - 32)

e1 = Temperature(78)
print(e1.fahrenheit, e1.celsius)
e1.celsius = 2.0
print(e1.fahrenheit, e1.celsius)

输出:- 78 46.0 78 2.0

当 e1.celsius = 2.0 时,我希望 e1.fahrenheit 值为 34,但不想再添加任何方法或 类.

class Celsius:

    def __get__(self, instance, owner):
        return 5 * (instance.fahrenheit - 32) / 9

    def __set__(self, instance, value):
        instance.fahrenheit = 32 + 9 * value / 5


class Temperature:

    celsius = Celsius()

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


e1 = Temperature(32)
print(e1.fahrenheit, e1.celsius)
e1.celsius = 0.0
print(e1.fahrenheit, e1.celsius)

输出:

32, 0.0
32.0 0.0

得到我的完美解决方案,使用 'instance' 对象