Python property() Function



The Python property() function is a built-in function used to create and manage the properties of a class with the help of other methods like getters and setters. If we don't want to use the property() function explicitly, we can use its @property decorator.

In an object-oriented programming language, like Python, getters and setters are used for data encapsulation. Here, Encapsulation means bundling the attributes and methods to restrict their direct access.

Syntax

Following is the syntax of the Python property() function −

property(getter, setter, deleter, doc)

Parameters

The Python property() function accepts the following parameters −

  • getter − It represents the getter method which is used to get the value of an attribute.

  • setter − This parameter represents the setter method which is used to set the value of an attribute.

  • deleter − This parameter specifies the deleter method which is used to delete the value of an attribute.

  • doc − It specifies a string that contains the docstring for the attributes.

Return Value

The Python property() function returns the property attribute of the specified getter, setter, and deleter.

Examples

In this section, we will understand the property() function with some examples −

Example 1

The following example shows the basic usage of Python property() function. Here, we are creating a simple read-only property with the help of @property decorator.

class Flight:
   def __init__(self, jetEngine):
      self._jetEngine = jetEngine

   @property
   def jetEngine(self):
      return self._jetEngine
        
myFlight = Flight(121)
print("Getting the attribute value of class:")
print(myFlight.jetEngine)

When we run above program, it produces following result −

Getting the attribute value of class:
121 

Example 2

If we don't want to call property() function explicitly, we need to use the @property decorator. In the code below, we are creating a getter to get the property and adding a setter function to modify the property.

class Flight:
   def __init__(self, model):
      self._model = model

   @property
   def model(self):
      return self._model

   @model.setter
   def model(self, modelVal):
      if modelVal >= 0:
         self._model = modelVal
      else:
         raise ValueError("Model value must be non-negative")
            
myFlight = Flight(1210012)
print("Setting the model number of Flight using setter:")
print(myFlight.model)

Following is an output of the above code −

Setting the model number of Flight using setter:
1210012

Example 3

The code below demonstrates how to use the property() function to get, set and delete property attributes of a given class. For this purpose, we have created getter, setter and deleter method.

class Metal:
   def __init__(self, metalName):
      self._metalName = metalName

   def get_metal(self):
      print("Getting Metal Name")
      return self._metalName

   def set_metal(self, name):
      print("Setting Metal Name to:" + name)
      self._metalName = name

   def del_metal(self):
      print("Deleting Metal Name")
      del self._metalName

   metalName = property(get_metal, set_metal, del_metal)

metal = Metal("Gold")
print(metal.metalName)
metal.metalName = "Silver"
del metal.metalName

Output of the above code is as follows −

Getting Metal Name
Gold
Setting Metal Name to:Silver
Deleting Metal Name
python_built_in_functions.htm
Advertisements