我是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?
你不应该用0初始化t1.celsius
,而是在celsius
中使用Temperature.__init__
的setter:
class Temperature:
celsius = Celsius()
def __init__(self, f):
self.fahrenheit = self.celsius = f
但是:Kua zxsw指出
https://repl.it/repls/UsableSunnyConfig
这是你的错。你正在创建零值的Celsius类,所以setter设置(0 - 32)* 5/9,即 - 17.777777777778
这是一个简单的温度管理器,可以处理以下对话:Kelvin,Fahrenheit,Celsius
t1.celsius = 0