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
class Geeks:
def __init__(self):
self._age = 0
# using property decorator
# a getter function
@property
def age(self):
print("getter method called")
return self._age
# a setter function
@age.setter
def age(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…