28

"Getters" y "Setters" en Python

Los “Getters” y “Setters” se utilizan en POO para garantizar el principio de la encapsulación de datos.

Claramente el getter se emplea para obtener los datos y el setter para cambiar el valor de los datos. Son decoradores y se identifican por tener un @ (como lo veremos en el ejemplo)

Por lo general, estos se usan en Python:

  • Si queremos añadir una lógica de validación para obtener y establecer un valor.
  • Para evitar el acceso directo a un atributo de clase (un usuario externo no puede acceder directamente a las variables privadas ni modificarlas).

Python @property es uno de los decoradores integrados. El propósito principal de cualquier decorador es cambiar los métodos o atributos de su clase de tal manera que el usuario de su clase no necesite hacer ningún cambio en su código. Por ejemplo

classGeeks:def__init__(self): 
          self._age = 0# using property decorator # a getter function      @propertydefage(self): 
         print("getter method called") 
         return self._age 
       
     # a setter function      @age.setter defage(self, a):if(a < 18): 
            raise ValueError("Sorry you age is below eligibility criteria") 
         print("setter method called") 
         self._age = a 
  
mark = Geeks() 
  
mark.age = 19
  
print(mark.age) 
>>>setter method called
>>>getter method called
>>>19

Fuentes: [ 1, 2 ]

Hola, resumí y traduje un poco de la información que encontré, me parece que el curso deberia abordar a fondo temas como: atributos de clase y de instancia; atributos públicos, privados y protegidos; entre otros…

Emma Gachancipá
Twitter | Linkedin

Escribe tu comentario
+ 2
Ordenar por:
2
20187Puntos

@emm_coded, gracias por el aporte me quedo un poco más claro, pero quería preguntarte porque se imprime primero el setter que el getter?

4
9489Puntos
un año

cuando nosotros pedimos que se nos muestre información de la variable, pues se ejecuta el getter que es quien no dá lo que le pedimos, pero cuando establecemos un valor nuevo para esa variable, entonces se ejecuta el setter porque es él quien va a modificar el valor antiguo de la variable por uno nuevo.
en este caso primero se creó:
mark = Geeks()
si su pones justo despues de eso mark.age() se va a ejecutar el getter porque es él quien nos devuelve ese vator.
si despues de eso tu estableces un nuevo valor usando mark.age() = 20, en ese punto nosotros estamos estableciendo (Set) un nuevo valor y por ese el setter es quien se ejecuta. hasta ahi nada mas puede pasar.
pero si nosotros queremos que se nos muestre en pantalla nuevamente el age de mark poniendo mark.age() pues solamente se va a ejecutar el getter que es quien nos devuelte el valor.
en el codigo se observas el getter solo hace uso de return, mientras que el setter solo tiene una igualdad que es la que establece el nuevo valor que es el que nosotros metemos.

1
22905Puntos

Gracias! Y de acuerdo contigo, a pesar de que eso se trabajo en el curso anterior, muchos vinieron a aprender POO con Python sin esos conceptos.

1
6621Puntos

Muchas , pero muchas gracias!! Entendí mucho mejor el concepto de setter y getter 😂

1
4577Puntos

Bien hecho! Gracias

0
9489Puntos

Excelente, muchas gracias!