Python - Getter and Setter Methods


Getter and Setter Methods in Python

In this tutorial, we will explain the concept of getter and setter methods in Python.

Getter methods are used to retrieve the value of an attribute, while setter methods are used to modify the value of an attribute in a controlled manner. This process of controlling the properties of a class instance is kind of Encapsulating the details of an object from outside the class.

Use of getter and setter methods

Getter and setter methods are used when you want to control how attribute values are accessed and modified. They provide an additional layer of abstraction and allow you to enforce certain rules or validations while working with attributes.

Examples

1. Using Getter and Setter Methods in Person class

In this example, we'll define a class Person with getter and setter methods for its attribute.

Python Program

class Person:
    def __init__(self, name, age):
        self._name = name
        self._age = age
    
    # Getter method
    def get_name(self):
        return self._name
    
    # Setter method
    def set_age(self, age):
        if age >= 0:
            self._age = age
        else:
            print("Age cannot be negative")
    
    # Getter method
    def get_age(self):
        return self._age

# Create an instance of Person
person = Person("Alice", 30)

# Use getter method
print(f"Name: {person.get_name()}")
print(f"Age: {person.get_age()}")

# Use setter method
person.set_age(25)
print(f"Updated age: {person.get_age()}")

Output

Name: Alice
Age: 30
Updated age: 25

In this example, the get_name() and get_age() methods are getter methods that allow controlled access to the private attributes: _name and _age respectively.

The set_age() method is a setter method that enforces a condition before updating the attribute.

2. Getter and Setter methods using Property Decorators

Python provides property decorators as a more concise way to create getter and setter methods.

In this example, the @property decorator is used to define the getter method, and the @radius.setter decorator is used to define the setter method. These decorators make the getter and setter methods look like regular attribute accesses.

Python Program


class Circle:
    def __init__(self, radius):
        self._radius = radius
    
    @property
    def radius(self):
        return self._radius
    
    @radius.setter
    def radius(self, value):
        if value >= 0:
            self._radius = value
        else:
            print("Radius cannot be negative")

circle = Circle(5)
print(f"Initial radius: {circle.radius}")
circle.radius = 7
print(f"Updated radius: {circle.radius}")

Output

Initial radius: 5
Updated radius: 7

Consider the following statement.

print(f"Initial radius: {circle.radius}")

When circle.radius is executed, the getter method radius() is called.

Now, consider the following statement.

circle.radius = 7

When this statement is executed, the setter method radius(value) is called, with 7 passed as argument for the value parameter.

Summary

In this tutorial of Python Classes and Objects, we have learnt about Getter and setter methods in a class, how to use them to control how attribute values are accessed and modified in a class, with some example programs.