2009-04-08 15 views
27

Znam sposobu __add__ zastąpić także, ale gdy użyć, aby zastąpić + =, to kończy się w jednym z dwóch problemów:Czy istnieje sposób na przeciążenie + = w python?

(1), jeśli __add__ mutuje siebie, a następnie

z = x + y 

zmutuje x, gdy nie chcę, aby x było tam mutowane.

(2) jeśli __add__ zwraca nowy obiekt, a następnie

tmp = z 
z += x 
z += y 
tmp += w 
return z 

powróci coś bez wag ponieważ oo i tmp punktu do różnych obiektów po z += x jest wykonywany.

Potrafię zrobić pewien rodzaj metody .append(), ale wolałbym przeciążać +=, jeśli to możliwe.

+10

Programistów, którzy RTFM są zagrożonym gatunkiem. – tzot

+2

@ W pewnym sensie patrzysz na F'ing M. ;-) –

+0

Czy sugerujesz, że Josh jest jednym z pisarzy ręcznych Pythona? Niestety, nie rozumiem, co masz na myśli, @ BobStein-VisiBone. – tzot

Odpowiedz

50

Tak. Wystarczy zastąpić metodę obiektu __iadd__, która przyjmuje takie same parametry, jak add. Możesz znaleźć więcej informacji here.

+1

+1: Zacytuj dokumentację :-) –

Powiązane problemy