Está en la página 1de 1

Decorador Property

En otros tutoriales hemos visto como se crean y usan los decoradores en Python. A
continuación veremos el decorador @property, que viene por defecto con Python, y
puede ser usado para modificar un método para que sea un atributo o propiedad. Es
importante que conozcan antes la programación orientada a objetos.

El decorador puede ser usado sobre un método, que hará que actúe como si fuera un
atributo.

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

@property
def mi_atributo(self):
return self.__mi_atributo
Como si de un atributo normal se tratase, podemos acceder a el con el objeto . y
nombre.

mi_clase = Clase("valor_atributo")
mi_clase.mi_atributo
# 'valor_atributo'
Muy importante notar que aunque mi_atributo pueda parecer un método, en realidad no
lo es, por lo que no puede ser llamado con ().

# mi_clase.mi_atributo() # Error! Es un atributo, no un método


Tal vez te preguntes para que sirve esto, ya que el siguiente código hace
exactamente lo mismo sin hacer uso de decoradores.

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

mi_clase = Clase("valor_atributo")
mi_clase.mi_atributo
# 'valor_atributo'
Bien, la explicación no es sencilla, pero está relacionada con el concepto de
encapsulación de la programación orientada a objetos. Este concepto nos indica que
en determinadas ocasiones es importante ocultar el estado interno de los objetos al
exterior, para evitar que sean modificados de manera incorrecta. Para la gente que
venga del mundo de Java, esto no será nada nuevo, y está muy relacionado con los
métodos set()y get() que veremos a continuación.

La primera diferencia que vemos entre los códigos anteriores es el uso de __ antes
de mi_atributo. Cuando nombramos una variable de esta manera, es una forma de
decirle a Python que queremos que se “oculte” y que no pueda ser accedida como el
resto de atributos.

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

mi_clase = Clase("valor_atributo")

# mi_clase.__mi_atributo # Error!

También podría gustarte

  • JAVA3
    JAVA3
    Documento2 páginas
    JAVA3
    Javier Barco Monserrate
    Aún no hay calificaciones
  • Java 14
    Java 14
    Documento2 páginas
    Java 14
    Javier Barco Monserrate
    Aún no hay calificaciones
  • Java 16
    Java 16
    Documento1 página
    Java 16
    Javier Barco Monserrate
    Aún no hay calificaciones
  • Java 15
    Java 15
    Documento2 páginas
    Java 15
    Javier Barco Monserrate
    Aún no hay calificaciones
  • Java 18
    Java 18
    Documento1 página
    Java 18
    Javier Barco Monserrate
    Aún no hay calificaciones
  • Java 13
    Java 13
    Documento1 página
    Java 13
    Javier Barco Monserrate
    Aún no hay calificaciones
  • Expresion Oral de Ramírez Martínez
    Expresion Oral de Ramírez Martínez
    Documento16 páginas
    Expresion Oral de Ramírez Martínez
    Luz
    100% (1)
  • Java 989898
    Java 989898
    Documento1 página
    Java 989898
    Javier Barco Monserrate
    Aún no hay calificaciones
  • Java 17
    Java 17
    Documento1 página
    Java 17
    Javier Barco Monserrate
    Aún no hay calificaciones
  • JAVA2
    JAVA2
    Documento2 páginas
    JAVA2
    Javier Barco Monserrate
    Aún no hay calificaciones
  • Java 12
    Java 12
    Documento1 página
    Java 12
    Javier Barco Monserrate
    Aún no hay calificaciones
  • Java 12
    Java 12
    Documento1 página
    Java 12
    Javier Barco Monserrate
    Aún no hay calificaciones
  • Java 999999
    Java 999999
    Documento1 página
    Java 999999
    Javier Barco Monserrate
    Aún no hay calificaciones
  • Java 1
    Java 1
    Documento5 páginas
    Java 1
    Javier Barco Monserrate
    Aún no hay calificaciones
  • Java 999999
    Java 999999
    Documento1 página
    Java 999999
    Javier Barco Monserrate
    Aún no hay calificaciones
  • Java 17
    Java 17
    Documento1 página
    Java 17
    Javier Barco Monserrate
    Aún no hay calificaciones
  • Java 13
    Java 13
    Documento1 página
    Java 13
    Javier Barco Monserrate
    Aún no hay calificaciones
  • Java 15
    Java 15
    Documento2 páginas
    Java 15
    Javier Barco Monserrate
    Aún no hay calificaciones
  • Java 14
    Java 14
    Documento2 páginas
    Java 14
    Javier Barco Monserrate
    Aún no hay calificaciones
  • Java 18
    Java 18
    Documento1 página
    Java 18
    Javier Barco Monserrate
    Aún no hay calificaciones
  • JAVA2
    JAVA2
    Documento2 páginas
    JAVA2
    Javier Barco Monserrate
    Aún no hay calificaciones
  • JAVA3
    JAVA3
    Documento2 páginas
    JAVA3
    Javier Barco Monserrate
    Aún no hay calificaciones
  • Java 16
    Java 16
    Documento1 página
    Java 16
    Javier Barco Monserrate
    Aún no hay calificaciones
  • Java 1
    Java 1
    Documento5 páginas
    Java 1
    Javier Barco Monserrate
    Aún no hay calificaciones