【问题标题】:Addition of two classes gives TypeError添加两个类会产生 TypeError
【发布时间】:2022-06-28 21:18:02
【问题描述】:

我已经定义了一个返回温度的类。

class Celsius:
    def __init__(self, temperature=0):
        self.temperature = temperature

    def _add_(self,other):
        return Celsius(self.temperature + other.temperature)

    @property
    def temperature(self):
        print("Getting value...")
        return self._temperature

    @temperature.setter
    def temperature(self, value):
        print("Setting value...")
        self._temperature = value
        
print("my temperature is :",Celsius(37).temperature)

如果我想添加两个班级的温度,我需要做什么? 如果我输入:temp_total = Celsius(37) + Celsius(6) 它给了我一个 TypeError。我以为我可以用 '__ add __' 表达式解决这个问题,但这不起作用。任何想法? 我想输入 out = Celsius(37) + Celsius(6) 给我 out.temperature = 43。

【问题讨论】:

    标签: python class addition


    【解决方案1】:

    是的,您需要 __add__ 函数来覆盖 sum 操作:

    class Celsius:
        def __init__(self, temperature=0):
            self.temperature = temperature
    
        def _add_(self,other):
            return Celsius(self.temperature + other.temperature)
    
        @property
        def temperature(self):
            print("Getting value...")
            return self._temperature
    
        @temperature.setter
        def temperature(self, value):
            print("Setting value...")
            self._temperature = value
        
        def __add__(self, other):
            return Celsius(self.temperature+other.temperature)
            
    print((Celsius(3)+Celsius(3)).temperature)
    

    输出:

    Setting value...
    Setting value...
    Getting value...
    Getting value...
    Setting value...
    Getting value...
    6
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-08-04
      • 2022-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-24
      • 2020-02-13
      • 2021-04-10
      相关资源
      最近更新 更多