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:
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
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…
@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?
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.
gracias 😃
Muchas gracias
Hola, cómo estás? Me dirías que theme estás usando? Es vsc? Me gustan mucho los colores!!! Gracias 😊
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 🐱👤
Aquí dejo un artículo que los explica mejor
Properties can be considered the “Pythonic” way of working with attributes because:
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.
Muchas , pero muchas gracias!! Entendí mucho mejor el concepto de setter y getter 😂
Mil gracias
Bien hecho! Gracias
Aunque basicamente en python no tenemos algo como variables u atributos privados como en otros lenguajes (java) aqui el articulo original https://www.geeksforgeeks.org/getter-and-setter-in-python/
Excelente, muchas gracias!