Simplify Custom Object Operations with Python Magic Methods

Manually defining arithmetic operations between custom objects can make code less readable and harder to understand.

Python’s special methods, such as __add__, enable natural arithmetic syntax between custom objects, making code more readable and intuitive, and allowing you to focus on program logic.

Let’s consider an example to illustrate the problem. Suppose we have a class Animal with attributes species and weight, and we want to calculate the total weight of two animals.

class Animal:
    def __init__(self, species: str, weight: float):
        self.species = species
        self.weight = weight


lion = Animal("Lion", 200)
tiger = Animal("Tiger", 180)

# Messy calculations
total_weight = lion.weight + tiger.weight
total_weight

Output:

380

In this example, we have to manually access the weight attribute of each Animal object and perform the addition. This approach is not only verbose but also error-prone, as we might accidentally access the wrong attribute or perform the wrong operation.

To enable natural arithmetic syntax, we can implement the __add__ method in the Animal class. This method will be called when we use the + operator between two Animal objects.

class Animal:
    def __init__(self, species: str, weight: float):
        self.species = species
        self.weight = weight

    def __add__(self, other):
        # Combine weights
        return Animal(f"{self.species}+{other.species}", self.weight + other.weight)


lion = Animal("Lion", 200)
tiger = Animal("Tiger", 180)
combined = lion + tiger
combined.weight

Output:

380

By implementing the __add__ method, we can now use the + operator to combine the weights of two Animal objects. This approach is not only more readable but also more intuitive.

Scroll to Top

Work with Khuyen Tran

Work with Khuyen Tran