2009-04-08 24 views
27

que sé sobre el método __add__ para anular más, pero cuando se utiliza que para anular + =, termino con uno de dos problemas:¿Hay alguna forma de sobrecargar + = en python?

(1) si __add__ muta uno mismo, entonces

z = x + y 

mutará x cuando realmente no quiero que x mute allí.

(2) si __add__ devuelve un nuevo objeto, entonces

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

devolverá algo sin w desde z y tmp punto a diferentes objetos después de z += x se ejecuta.

Puedo hacer algún tipo de método .append(), pero prefiero sobrecargar += si es posible.

+10

Los programadores que RTFM son una especie en peligro de extinción. – tzot

+2

@tzot en cierto modo, estás mirando F'ing M. ;-) –

+0

¿Implicas que Josh es uno de los escritores manuales de Python? Lo siento, no parece entender lo que quieres decir, @ BobStein-VisiBone. – tzot

Respuesta

50

Sí. Simplemente anule el método __iadd__ del objeto, que toma los mismos parámetros que add. Puede encontrar más información here.

+1

+1: Cita la documentación :-) –

Cuestiones relacionadas