Ver Mensaje Individual
  #2 (permalink)  
Antiguo 01/12/2014, 11:01
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Duda con retorno por valor o por referencia

Creo que debes seguir el comportamiento general del lenguaje en el que trabajes.
A nadie va a sorprender que devuelvas una referencia, si por defecto Python asigna referencias en vez de copiar los objetos.

Si te fijás en la biblioteca estándar de Python, vas a encontrar que la asignación es siempre vía referencias, y cuando se requieren copias existen métodos o funciones específicas para hacerlo.

Si yo tengo que usar la función getA(), y sé qué A es un objeto, voy a asumir que lo que voy a obtener es una referencia, porque así funciona el lenguaje. Si quiero obtener una copia, depende de lo que sea A:

* Si está documentado como un tipo incluido en Python (conjunto, diccionario, lista), sé que puedo usar las funciones estándar
* Si es un objeto particular de tu aplicación, deberías proveer una función copy() o similar para A, que me permita obtener una copia.

Ahora, si te interesa que el objeto no cambie fuera de la clase, lo que deberías hacer es no retornarlo, sino que todas las modificaciones necesarias sean hechas a través de métodos del objeto. Como todo, depende de lo que sea realmente A en tu programa, y qué puedas llegar a necesitar hacer con él.