Hola a todos.
Tengo una duda respecto a la manera de devolver objetos en python. Por ejemplo, supongamos una clase A con una variable de tipo diccionario 'a', y tenemos un método:
"def getA(self): return self.__a".
Ese método devuelve una referencia a la variable en cuestión, de manera que si luego cambiamos su valor, cambia también el valor de la variable de la clase.
Mi pregunta es cuál es la manera más recomendada/usada para devolver este tipo de variables, si devolver una referencia como antes, o devolver una copia para que no pueda cambiarse desde fuera de la clase. ("return dict(self.__a)").
Quisiera también saber si en caso de tomar la filosofía de devolver por valor (copias), el rendimiento se resiente por todas las copias que vamos a tener que hacer, o si realmente no se va a notar casi nada.
¿Sería algo recomendable devolver referencias tal cual y en la documentación indicar este asunto?
Saludos, gracias.