Paga en 4 cuotas sin intereses de $52.25

Antes:$249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

19d

11h

40m

34s

31

"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
30568Puntos
4 años

@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
9536Puntos
4 años

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
4Puntos
2 años

Hola, cómo estás? Me dirías que theme estás usando? Es vsc? Me gustan mucho los colores!!! Gracias 😊

1
6855Puntos
2 años

Muchas gracias, solo una pequeña duda

¿porqué en los getter (linea 6) se pone @property
y en los setter @age.setter (linea 12)?

De antemano muchas gracias nuevamente 🐱‍👤

1
9112Puntos
2 años

Aquí dejo un artículo que los explica mejor

Properties can be considered the “Pythonic” way of working with attributes because:

  • The syntax used to define properties is very concise and readable.
  • You can access instance attributes exactly as if they were public attributes while using the “magic” of intermediaries (getters and setters) to validate new values and to avoid accessing or modifying the data directly.
  • By using @property, you can “reuse” the name of a property to avoid creating new names for the getters, setters, and deleters.
1
28159Puntos
3 años

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
6702Puntos
5 años

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

1
4593Puntos
5 años

Bien hecho! Gracias

0
9536Puntos
4 años

Excelente, muchas gracias!