Función de propiedad() de Python

La función de propiedad de Python() devuelve la propiedad y se usa para crear la propiedad de una clase. 

Sintaxis: propiedad (fget, fset, fdel, doc)

Parámetros: 

  • fget() – utilizado para obtener el valor del atributo
  • fset() : se usa para establecer el valor del atributo
  • fdel() : se usa para eliminar el valor del atributo
  • doc() – string que contiene la documentación (docstring) para el atributo

Retorno: Devuelve un atributo de propiedad del getter, setter y deleter dado.

Nota: 

  • Si no se proporcionan argumentos, el método property() devuelve un atributo de propiedad base que no contiene ningún getter, setter o deleter.
  • Si no se proporciona doc, el método property() toma la string de documentación de la función getter.

Ejemplo #1: Usando el método property() 

Python3

# Python program to explain property() function
# Alphabet class
 
class Alphabet:
    def __init__(self, value):
        self._value = value
 
    # getting the values
    def getValue(self):
        print('Getting value')
        return self._value
 
    # setting the values
    def setValue(self, value):
        print('Setting value to ' + value)
        self._value = value
 
    # deleting the values
    def delValue(self):
        print('Deleting value')
        del self._value
 
    value = property(getValue, setValue,
                     delValue, )
 
 
# passing the value
x = Alphabet('GeeksforGeeks')
print(x.value)
 
x.value = 'GfG'
 
del x.value

Producción: 

Getting value
GeeksforGeeks
Setting value to GfG
Deleting value

Propiedad de Python usando Decorator

El trabajo principal de los decoradores es que se utilizan para agregar funcionalidad al código existente. También llamada metaprogramación, ya que una parte del programa intenta modificar otra parte del programa en tiempo de compilación.

Ejemplo #2: Uso del decorador @property

Python3

# Python program to explain property()
# function using decorator
 
class Alphabet:
    def __init__(self, value):
        self._value = value
 
    # getting the values
    @property
    def value(self):
        print('Getting value')
        return self._value
 
    # setting the values
    @value.setter
    def value(self, value):
        print('Setting value to ' + value)
        self._value = value
 
    # deleting the values
    @value.deleter
    def value(self):
        print('Deleting value')
        del self._value
 
 
# passing the value
x = Alphabet('Peter')
print(x.value)
 
x.value = 'Diesel'
 
del x.value

Producción: 

Getting value
Peter
Setting value to Diesel
Deleting value

Usar el decorador @property funciona igual que el método property().

Primero, especifique que el método value() también es un atributo de Alphabet, luego, usamos el valor del atributo para especificar el establecedor de propiedades de Python y el eliminador. Tenga en cuenta que el mismo método value() se usa con diferentes definiciones para definir getter, setter y deleter. Cada vez que usamos x.value, internamente llama al getter, setter y deleter apropiado.

Propiedad de Python vs atributo

Atributo de clase: los atributos de clase son únicos para cada clase. Cada instancia de la clase tendrá este atributo. 

Python3

# declare a class
class Employee:
 
    # class attribute
    count = 0
 
    # define a method
    def increase(self):
        Employee.count += 1
 
# create an Employee
# class object
a1 = Employee()
 
# calling object's method
a1.increase()
 
# print value of class attribute
print(a1.count)
 
a2 = Employee()
 
a2.increase()
 
print(a2.count)
 
print(Employee.count)

Producción:

1
2
2

En el ejemplo anterior, la variable de conteo es un atributo de clase.

Propiedad de Python(): Devuelve la propiedad 

Python3

# create a class
class gfg:
     
    # constructor
    def __init__(self, value):
        self._value = value
             
    # getting the values
    def getter(self):
        print('Getting value')
        return self._value
             
    # setting the values
    def setter(self, value):
        print('Setting value to ' + value)
        self._value = value
             
    # deleting the values
    def deleter(self):
        print('Deleting value')
        del self._value
     
    # create a properties
    value = property(getter, setter, deleter, )
     
# create a gfg class object
x = gfg('Happy Coding!')
print(x.value)
     
x.value = 'Hey Coder!'
     
# deleting the value
del x.value

Producción:

Getting value
Happy Coding!
Setting value to Hey Coder!
Deleting value

Aplicaciones

Al usar el método property(), podemos modificar nuestra clase e implementar la restricción de valor sin que se requiera ningún cambio en el código del cliente. Para que la implementación sea compatible con versiones anteriores.

Publicación traducida automáticamente

Artículo escrito por shubham tyagi 4 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *