Sunday, September 22, 2024
Google search engine
HomeLanguagesPython property() function

Python property() function

Python property() function returns the object of the property class and it is used to create property of a class. 

Syntax: property(fget, fset, fdel, doc)

Parameters: 

  • fget() – used to get the value of attribute
  • fset() – used to set the value of attribute
  • fdel() – used to delete the attribute value
  • doc() – string that contains the documentation (docstring) for the attribute

Return: Returns a property attribute from the given getter, setter and deleter.

Note: 

  • If no arguments are given, property() method returns a base property attribute that doesn’t contain any getter, setter or deleter.
  • If doc isn’t provided, property() method takes the docstring of the getter function.

Example #1: Using property() method 

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('Lazyroar')
print(x.value)
 
x.value = 'GfG'
 
del x.value


Output: 

Getting value
Lazyroar
Setting value to GfG
Deleting value

Python property Using Decorator

The main work of decorators is they are used to add functionality to the existing code. Also called metaprogramming, as a part of the program tries to modify another part of the program at compile time.

Example #2: Using @property decorator

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


Output: 

Getting value
Peter
Setting value to Diesel
Deleting value

Using @property decorator works same as property() method.

First, specify that value() method is also an attribute of Alphabet then, we use the attribute value to specify the Python property setter and the deleter. Notice that the same method value() is used with different definitions for defining the getter, setter, and deleter. Whenever we use x.value, it internally calls the appropriate getter, setter, and deleter.

Python property vs attribute

Class Attribute: Class Attributes are unique to each class. Each instance of the class will have this attribute. 

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)


Output:

1
2
2

In the above example, the count variable is a class attribute.

Python property(): Returns object of the property class 

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


Output:

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

Applications

By using property() method, we can modify our class and implement the value constraint without any change required to the client code. So that the implementation is backward compatible.

RELATED ARTICLES

Most Popular

Recent Comments