0
我遇到以下代碼來添加/減去兩個複數。我是python的初學者,所以我完全無法理解代碼。你們可以幫我理解下面的代碼:添加兩個複數的代碼:
- 海峽方法在下面的代碼的意義。
「其他」變量在中的含義add和sub方法即,如何從輸入中返回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
但是,當您打印c1 + c2時,這裏如何調用add方法。我的意思是,加法到底發生了什麼? – SpaceOddity
'c1 + c2'在這種情況下用'c1 .__ add __(c2)'完成。然後生成的ComplexNumber將被轉換爲一個帶有__str __()的字符串並打印出來。 –
當我在刪除__str__方法後嘗試運行代碼時,爲什麼不是c1 + c2打印相同的輸出?因爲我的理解__str__方法只是將數字更改爲特定格式而沒有其他內容。 – SpaceOddity