2015-05-26 52 views
0

我遇到以下代碼來添加/減去兩個複數。我是python的初學者,所以我完全無法理解代碼。你們可以幫我理解下面的代碼:添加兩個複數的代碼:

  1. 海峽方法在下面的代碼的意義。
  2. 「其他」變量在中的含義addsub方法即,如何從輸入中返回other.a和other.b值。

    class ComplexNumber(object): 
        def __init__(self, a, b): 
         '''a is real part and b is the imaginary part.''' 
         self.a = a 
         self.b = b 
    
        def __str__(self): 
         '''Represent complex number in a restrict way.''' 
         if self.b == 0: 
          return "%.2f" % self.a 
         elif self.a == 0: 
          #return "- %.2fi" % abs(self.b) 
          return "%.2fi" % self.b 
         elif self.b < 0: 
          return "%.2f - %.2fi" % (self.a, abs(self.b)) 
         else: 
          return "%.2f + %.2fi" % (self.a, self.b) 
    
        def __add__(self, other): 
         return ComplexNumber(self.a + other.a, self.b + other.b) 
    
        def __sub__(self, other): 
         return ComplexNumber(self.a - other.a, self.b - other.b) 
    
        a, b = [float(item) for item in raw_input().split()] 
        c1 = ComplexNumber(a, b) 
        a, b = [float(item) for item in raw_input().split()] 
        c2 = ComplexNumber(a, b) 
    
        print c1 + c2 
        print c1 - c2 
    

回答

0

__str__()是定義你如何轉換對象爲字符串的方法。

other變量是要添加到此對象的對象。 「其他」對象。

+0

但是,當您打印c1 + c2時,這裏如何調用add方法。我的意思是,加法到底發生了什麼? – SpaceOddity

+0

'c1 + c2'在這種情況下用'c1 .__ add __(c2)'完成。然後生成的ComplexNumber將被轉換爲一個帶有__str __()的字符串並打印出來。 –

+0

當我在刪除__str__方法後嘗試運行代碼時,爲什麼不是c1 + c2打印相同的輸出?因爲我的理解__str__方法只是將數字更改爲特定格式而沒有其他內容。 – SpaceOddity