La construcción property () devuelve el atributo de propiedad.
La sintaxis de property()es:
propiedad (fget = None, fset = None, fdel = None, doc = None)
Lectura recomendada: Python @property: ¿Cómo usarlo y por qué?
propiedad () Parámetros
La property()toma cuatro parámetros opcionales:
- fget (opcional) : función para obtener el valor del atributo. Por defecto es
None. - fset (opcional) : función para establecer el valor del atributo. Por defecto es
None. - fdel (opcional) : función para eliminar el valor del atributo. Por defecto es
None. - doc (opcional) : una cadena que contiene la documentación (docstring) para el atributo. Por defecto es
None.
Valor de retorno de la propiedad ()
property() devuelve el atributo de propiedad del captador, definidor y eliminador dado.
- Si no se proporcionan argumentos,
property()devuelve un atributo de propiedad base que no contiene ningún captador, definidor o eliminador. - Si no se proporciona doc ,
property()toma la cadena de documentos de la función getter.
Ejemplo 1: crear un atributo con getter, setter y deleter
class Person: def __init__(self, name): self._name = name def get_name(self): print('Getting name') return self._name def set_name(self, value): print('Setting name to ' + value) self._name = value def del_name(self): print('Deleting name') del self._name # Set property to use get_name, set_name # and del_name methods name = property(get_name, set_name, del_name, 'Name property') p = Person('Adam') print(p.name) p.name = 'John' del p.name
Salida
Obteniendo nombre El nombre es: Adam Configurando el nombre a John Eliminando nombre
Aquí, _name se utiliza como variable privada para almacenar el nombre de Person.
También establecemos:
- un método getter
get_name()para obtener el nombre de la persona, - un método
set_name()de establecimiento para establecer el nombre de la persona, - un método
del_name()de eliminación para eliminar el nombre de la persona.
Ahora, establecemos un nuevo nombre de atributo de propiedad llamando al property()método.
Como se muestra en el programa, la referencia p.nameinterna a las llamadas get_name()como getter, set_name()setter y del_name()como deleter a través de la salida impresa presente dentro de los métodos.
Ejemplo 2: uso del decorador @property
En lugar de usar property(), puede usar el decorador de Python @propertypara asignar el captador, definidor y eliminador.
class Person: def __init__(self, name): self._name = name @property def name(self): print('Getting name') return self._name @name.setter def name(self, value): print('Setting name to ' + value) self._name = value @name.deleter def name(self): print('Deleting name') del self._name p = Person('Adam') print('The name is:', p.name) p.name = 'John' del p.name
Salida
Obteniendo nombre El nombre es: Adam Configurando el nombre a John Eliminando nombre
Aquí, en lugar de usar property(), usamos el @propertydecorador.
Primero, especificamos que el name()método también es un atributo de Person. Esto se hace usando @propertyantes el método getter como se muestra en el programa.
A continuación, usamos el nombre del atributo para especificar el definidor y el eliminador.
Esto se hace utilizando @name.setterpara el método de establecimiento y @name.deleterpara el método de eliminación.
Observe que hemos utilizado el mismo método name()con diferentes definiciones para definir el captador, el definidor y el eliminador.
Ahora, cada vez que lo usamos p.name, llama internamente al getter, setter y eliminador apropiados como se muestra en la salida impresa presente dentro del método.








