0% encontró este documento útil (0 votos)
6 vistas1 página

Uso de @property y setter en Python

El documento explica el uso del decorador @property en Python para controlar el acceso a atributos de una clase, permitiendo un acceso controlado y la posibilidad de realizar cálculos al consultar un atributo. También se menciona el uso del decorador @setter para modificar atributos con validaciones adicionales, mejorando la encapsulación. Se enfatiza la importancia de que las modificaciones a los atributos sean aprobadas por la clase para evitar cambios no deseados desde el exterior.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como TXT, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
6 vistas1 página

Uso de @property y setter en Python

El documento explica el uso del decorador @property en Python para controlar el acceso a atributos de una clase, permitiendo un acceso controlado y la posibilidad de realizar cálculos al consultar un atributo. También se menciona el uso del decorador @setter para modificar atributos con validaciones adicionales, mejorando la encapsulación. Se enfatiza la importancia de que las modificaciones a los atributos sean aprobadas por la clase para evitar cambios no deseados desde el exterior.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como TXT, PDF, TXT o lee en línea desde Scribd

sto puede ser importante con ciertas variables que no queremos que sean accesibles

desde el exterior de una manera no controlada. Al definir la propiedad con


@property el acceso a ese atributo se realiza a través de una función, siendo por
lo tanto un acceso controlado.

class Clase:
def __init__(self, mi_atributo):
self.__mi_atributo = mi_atributo

@property
def mi_atributo(self):
# El acceso se realiza a través de este "método" y
# podría contener código extra y no un simple retorno
return self.__mi_atributo
Otra utilidad podría ser la consulta de un parámetro que requiera de muchos
cálculos. Se podría tener un atributo que no estuviera directamente almacenado en
la clase, sino que precisara de realizar ciertos cálculos. Para optimizar esto, se
podrían hacer los cálculos sólo cuando el atributo es consultado.

Por último, existen varios añadidos al decorador @property como pueden ser el
setter. Se trata de otro decorador que permite definir un “método” que modifica el
contenido del atributo que se esté usando.

class Clase:
def __init__(self, mi_atributo):
self.__mi_atributo = mi_atributo

@property
def mi_atributo(self):
return self.__mi_atributo

@mi_atributo.setter
def mi_atributo(self, valor):
if valor != "":
print("Modificando el valor")
self.__mi_atributo = valor
else:
print("Error está vacío")
De esta forma podemos añadir código al setter, haciendo que por ejemplo realice
comprobaciones antes de modificar el valor. Esto es una cosa que de usar un
atributo normal no podríamos hacer, y es muy útil de cara a la encapsulación.

mi_clase = Clase("valor_atributo")
mi_clase.mi_atributo
# 'valor_atributo'

mi_clase.mi_atributo = "nuevo_valor"
mi_clase.mi_atributo
# 'nuevo_valor'

mi_clase.mi_atributo = ""
# Error está vacío
Resulta lógico pensar que si un determinado atributo pertenece a una clase, si
queremos modificarlo debería de tener la “aprobación” de la clase, para asegurarse
que ninguna entidad externa está “haciendo cosas raras”.

Anterior

También podría gustarte