The __add__ method in Python is a special method used to define the behavior of the addition operator +
for instances of a class. This method allows you to customize how objects of a class interact with each other when using the addition operator.
1. Basic Usage
To use the __add__
method, you need to define it within a class. Here is a basic example demonstrating its usage:
class Vector:
def __init__(self, x, y):
self.x = x
self.y = y
def __add__(self, other):
if isinstance(other, Vector):
return Vector(self.x + other.x, self.y + other.y)
return NotImplemented
def __repr__(self):
return f"Vector({self.x}, {self.y})"
# Create two Vector objects
v1 = Vector(1, 2)
v2 = Vector(3, 4)
# Add the two vectors
result = v1 + v2
print(result) # Output: Vector(4, 6)
2. Explanation
In this example:
- Class Definition: The
Vector
class is defined withx
andy
attributes representing the components of the vector. - __init__ Method: Initializes the
Vector
object withx
andy
values. - __add__ Method: Defines how two
Vector
objects are added. It checks if theother
operand is also aVector
and returns a newVector
with the summed components. - __repr__ Method: Provides a string representation of the
Vector
object, which is useful for debugging and displaying the object. - Operation: When
v1 + v2
is executed, Python calls the__add__
method to perform the addition, resulting in a newVector
object with the summed components.
3. Customizing Behavior
The __add__
method can be customized to handle addition with different types or to include additional logic. For example:
class CustomNumber:
def __init__(self, value):
self.value = value
def __add__(self, other):
if isinstance(other, CustomNumber):
return CustomNumber(self.value + other.value)
elif isinstance(other, (int, float)):
return CustomNumber(self.value + other)
return NotImplemented
def __repr__(self):
return f"CustomNumber({self.value})"
# Create CustomNumber objects
num1 = CustomNumber(5)
num2 = CustomNumber(10)
# Add CustomNumber objects
result = num1 + num2
print(result) # Output: CustomNumber(15)
# Add CustomNumber object to an integer
result = num1 + 5
print(result) # Output: CustomNumber(10)
4. Conclusion
The __add__
method is a powerful feature of Python’s data model that allows you to define how objects of your classes interact with the addition operator. By customizing this method, you can create intuitive and flexible classes that behave as expected in arithmetic operations.