定义温度类,其初始化方法接受以华氏温度为单位的温度。 用两种方法定义描述符类摄氏 获取,以摄氏度为单位返回温度。设置,可以将温度更改为以摄氏度为单位的新值。
Input : 1)t1=Temperature(32) 2)t1.celsius=0
Output: 1)32,0.0 2)32.0,0.0
第一个输入是华氏温度,第二个输入是摄氏温度
I have tried to write the code but without success:
class Celsius:
def __init__(self, temp = 0):
self.temp = temp
def to_fahrenheit(self):
return (self.temp * 1.8) + 32
def __get__(self):
return(self.temp)
def __set__(self,temp):
self.temp=temp
desc=property(__get__,__set__)
class Temperature:
def __init__(self,temp=0):
self.fahrenheit=temp
self.celsius=(((self.fahrenheit-32)*5)/9)
c=Celsius()
c.desc=self.celsius
self.fahrenheit=c.to_fahrenheit()
The output I got is 1)32.0 , 0.0 2)32.0 , 0
如果代码中需要任何修改,请允许我。
答案 0 :(得分:0)
您似乎正在尝试解决一个正在教您有关描述符的问题。请查看https://docs.python.org/3.7/howto/descriptor.html,了解更多详细信息。
但是您要为以下问题编写解决方案的所有必要条件
class Celsius:
def __get__(self, obj, objtype):
return ((obj.fahrenheit - 32) * 5) / 9
def __set__(self, obj, celcius):
obj.fahrenheit = ((celcius * 9) / 5) + 32
class Temperature:
celcius = Celsius()
def __init__(self, fahrenheit=0):
self.fahrenheit = fahrenheit
请注意与您的代码的一些重要区别:
Celcius
被实例化并直接分配给类上的celcius
,而不是像您所使用的情况那样分配给Temperature实例上的属性。Temperature
类上不复杂。