7

Qué son las propiedades, los getters y setters (y cómo usarlos)

Las propiedades permiten controlar el acceso a los atributos privados de la instancia. Dos de los tipos más comunes son los getters y los setters.

Los getters permiten obtener el dato privado. Se definen con un decorador y con un método que devuelva el dato. Ejemplo:

@propertydefmostrar(self):return self._atributo_privado
 

Los setters permiten cambiar los datos. Se definen con un decordador y poniendo .setter al final del nombre. A continuación, se escribe un método en donde se establezcan las condiciones para cambiar el dato privado. Ejemplo:

@cambiar_atributo.setterdefcambiar_atributo(self, permitir):if permitir:
       self._atributo_privado = "un nuevo dato"

Para entender su funcionamiento, veamos el siguiente ejemplo:

Imagina que en una pizzeria tienen un ingrediente especial para clientes VIP, y solo al poner una clave se autoriza la preparación de la pizza con este ingrediente. Por lo tanto, para la pizza se crea una clase en donde por defecto ese ingrediente no se permita.

classPizza:def__init__(self, ingredientes):
    self.ingredientes = ingredientes
    self._permitir_ingrediente_especial = False  @property  # ---> es el getter defpermitir_ingrediente_especial(self):return self._permitir_ingrediente_especial

  @permitir_ingrediente_especial.setter  # ----> es el setterdefpermitir_ingrediente_especial(self, permitir):if permitir: 
            contraseña = input("Escriba la contraseña: ")  
            if contraseña == "PlAtZi":
                self._permitir_ingrediente_especial = Trueelse: 
                raise ValueError("Alerta! Intruso")

De esta manera, se asegura que solo al introducir la clave de acceso, el ingrediente especial pueda ser utilizado.

En la consola podemos verificar el código de la siguiente manera:

>>>pizza_VIP = Pizza(['queso', 'tomate'])
>>>print(pizza_VIP.permitir_ingrediente_especial)
False
>>>pizza_VIP.permitir_ingrediente_especial = True
Escriba la contraseña: PlAtZi
Acceso Confirmado. Se permite usar el ingrediente especial
>>>print(pizza_VIP.permitir_ingrediente_especial)
True

Referencia:
Curso de Python de SoloLearn

Escribe tu comentario
+ 2
Ordenar por:
1
632Puntos

Gran complemento para la clase que levanto tantísimas dudas!

1
5156Puntos

Agradecido Maria Jose por tan esmerado aporte.
Éxitos en la carrera!