Tema: get y set
Ver Mensaje Individual
  #2 (permalink)  
Antiguo 28/08/2008, 11:11
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: get y set

Fijate en este ejemplo simple en Java

Código:
private int numero;

public int getNumero() {
    return numero;
}

public void setNumero(int nuevoNumero) {
    this.numero = nuevoNumero;
}
O sea: le quitás al "usuario" del método la posibilidad de "tocar" el valor del atributo directamente.
Si quiero obtener el valor de numero, no tengo más remedio que usar el método getNumero(), y el valor solamente lo puedo cambiar usando setNumero()

En python no se hace igual, sino que siempre se accede al atributo con su nombre, y dentro de la clase se asignan las funciones que se encargarán de "controlar" el acceso. Fijate en este ejemplo que encontré en esta página, y comparalo con el de arriba:

Código:
class Contacto(object):

    def set_email(self, value):
        if '@' not in value:
            raise Exception("Esto no parece ser una dirección de correo")
        self._email = value

    def get_email(self):
        return self._email

    email = property(get_email, set_email)
La diferencia principal es que luego yo voy a hacer:

Código:
contacto = Contacto();
contacto.email = "[email protected]"
como si estuviera asignando directamente, pero en realidad se llamará a la función set_email con el parámetro "[email protected]".

Espero que quede claro, para terminar creo que es importante mencionar que los nombres son completamente arbitrarios, solamente una convención.


Saludos.