如何在python中获取所需的输出?

时间:2019-01-16 18:30:43

标签: python python-3.x

定义温度类,其初始化方法接受以华氏温度为单位的温度。 用两种方法定义描述符类摄氏 获取,以摄氏度为单位返回温度。设置,可以将温度更改为以摄氏度为单位的新值。

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

如果代码中需要任何修改,请允许我。

1 个答案:

答案 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类上不复杂。
  • 实现中的大多数额外代码没有执行任何操作;通常,如果您添加代码来尝试解决问题,则如果解决不了问题,请不要随意处理。越少编程越多。