首页 > 解决方案 > 温度转换,无需调用方法

问题描述

我正在寻找一种解决方案来打印出 t1,转换为开尔文,而不调用以下任何方法。请参阅底部了解如何创建 t1 以及打印输出的解决方案应该是什么。我希望很快能听到一些反馈!

class Temperature:
    # --- YOUR CODE STARTS HERE
    val = 0


    def __init__(self,val, unit):
        self.val = val
        self.unit = unit

    def celcius(self):
        if self.unit == "F":
            new_temp = (self.val - 32)*(5/9)
            self.unit = "F"
            new_unit = self.unit
            return round(new_temp,2), new_unit
        elif self.unit == "K":
            new_temp = self.val - 273.15
            self.unit = "F"
            new_unit = self.unit
            return round(new_temp,2), new_unit
        else:
            return round(self.val,2), self.unit


    def fahrenheit(self):
        if self.unit == "C":
            new_temp = (self.val * (9/5)) + 32
            self.unit = "F"
            new_unit = self.unit
            return round(new_temp,2), new_unit
        elif self.unit == "K":
            new_temp = (val - 273.15) * (9/5) + 32
            self.unit = "F"
            new_unit = self.unit
            return round(new_temp,2), new_unit
        else:
            return round(self.val,2), self.unit

    def kelvin(self):
        if self.unit == "F":
            new_temp = (self.val - 32)*(5/9) + 273.15
            self.unit = "K"
            new_unit = self.unit
            return round(new_temp,2), new_unit
        elif self.unit == "C":
            new_temp = self.val + 273.15
            self.unit = "K"
            new_unit = self.unit
            return round(new_temp,2), new_unit
        else:
            return round(self.val,2), self.unit

    def __str__(self):





t1 = Temperature(31, "F")

print(t1)

问题是打印 t1 以获得 272.59 K 的结果

标签: python-3.xclassoopmethodsprinting

解决方案


你只需要实现 __str__ 方法。就像 Java 的 toString()

这可以解决问题:

def __str__(self):
    return "%f %s"%(self.val,self.unit)

推荐阅读