usage of property decorator in python

usage of property decorator in python

In this article we will learn about usage of property decorator in python. "property" is a built-in decorator in python. "property" is mostly used with classes. The decorator "property" makes the method that acts like an attribute to the python class. "property"  is a callable object in python. It has three methods "getter", "setter" and "deleter".

class Person:
    def __init__(self, first_name, last_name):
        self.first_name = first_name
        self.last_name = last_name
    def full_name(self):
        return self.first_name + " " + self.last_name
    def full_name(self, text):
        self.first_name, self.last_name = text.split()
    def full_name(self):
        del self.first_name
        del self.last_name

# working with property "getter"
p = Person('Ram', 'B')
# Output: Ram B
# working with property "setter"
p.full_name = "Arun B"
# Output: Arun
# Output: B
# working with property "deleter"
del p.full_name
# Output: AttributeError: 'Person' object has no attribute 'first_name'

In above code we have created a Person object which first name "Ram" and last name "B". We have defined the method "full_name" which returns persons full name by combining the first name and last name of person object. We have used the propery as decorator so, we can access the method as just like an attribute of a class.  In above, when we use the code "p.full_name", It returned the full name as "Ram B". Property has three method getter, setter and deleter. By default property acts like getter.  In python If we assign a value to a method then the method functionality will be lost. But, using a property we can set value. In above code, we set "Arun B" as value to property "full_name". When we set the value it is passed to the "@fullname.setter", there we process it. In above code we splitted it and  updated the values of attributes "first_name" and "last_name". When we delete the property then the method "@full_name.deleter" will be called. We can see the same in the above code "del p.full_name" when we execute it then it  called "@full_name.deleter" inside we have deleted attributes "first_name", "last_name". That's the reason we got an error "object has no attribute".

Support Me on Patreon