2017-04-22 255 views
-1

覆蓋_add_和_radd_時,當我嘗試重寫_add_和_radd_這樣的:錯誤蟒蛇

class adding(): 
    def __init__(self, a): 
     self.a=a 

    def _add_(self,x): 
     self.a += x 
    def _radd_(self,x): 
     self.a += x  

我得到一個錯誤,當我嘗試以下方法:

adding(1) + 1 
TypeError: unsupported operand type(s) for +: 'adding' and 'int' 

有誰知道在哪裏我錯了?

我想與+ X

編輯更新self.a值:

def _add_(self,x): 
    return adding(self.a + x) 
def _radd_(self,x): 
    return adding(self.a + x) 

拋出了同樣的錯誤。

+2

沒有什麼神奇的* *約'_add_'。你想'__add__' –

+0

上帝,我忘了其中的一個。非常感謝。 –

+0

你應該評論這個,所以我可以將其標記爲已解決。 –

回答

1

超負荷+跡象,我們需要實現的類__add__() 功能。擁有權利的同時也被賦予了重大的責任。我們 可以做任何我們喜歡的,在這個函數內。但是 返回一個座標和的Point對象是明智的。

ref

您必須使用__add__

def __add__(self,x): 
+0

我沒有這樣做嗎? –

+1

__!= _ :)您必須使用雙下劃線! – RaminNietzsche