2014-02-06 106 views
0

我試圖定義運算符類型add當談到我的class Point。 (x,y)正好是它的意思。我似乎無法讓操作員工作,因爲代碼不斷打印< 主要。點...>。我對這個東西很新,所以有人可以解釋我做錯了什麼?謝謝。以下是我的代碼:Python 3運算符超載

class Point: 
def __init__(self, x=0, y=0): 
    self.x = x 
    self.y = y 
def __add__(self, other): 
    return Point(self.x + other.x, self.y + other.y) 
p1 = Point(3,4) 
p2 = Point(5,6) 
p3 = p1 + p2 
print(p3) 
+0

_ 「的代碼保持打印''」 _。聽起來很正常。你期望它打印什麼? – Kevin

回答

1

您的添加功能按預期工作。這是你的print這就是問題所在。你得到一個醜陋的結果,比如<__main__.Point object at 0x027FA5B0>,因爲你沒有告訴課堂你想如何顯示自己。執行__str____repr__,以便它顯示一個很好的字符串。

class Point: 
    def __init__(self, x=0, y=0): 
     self.x = x 
     self.y = y 
    def __add__(self, other): 
     return Point(self.x + other.x, self.y + other.y) 
    def __repr__(self): 
     return "Point({}, {})".format(self.x, self.y) 
p1 = Point(3,4) 
p2 = Point(5,6) 
p3 = p1 + p2 
print(p3) 

結果:

Point(8, 10)