Advanced Dunder Methods

Python OOPFree Lesson

Advertisement

Advanced Dunder Methods

init, str, repr, add, and operator overloading.

Overview

Master dunder method patterns.

String Representations

class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y
    
    def __str__(self):
        return f"({self.x}, {self.y})"
    
    def __repr__(self):
        return f"Point({self.x}, {self.y})"
    
    def __eq__(self, other):
        return self.x == other.x and self.y == other.y
    
    def __hash__(self):
        return hash((self.x, self.y))

p1 = Point(1, 2)
p2 = Point(1, 2)

print(str(p1))   # (1, 2)
print(repr(p1))  # Point(1, 2)
print(p1 == p2)  # True
print(hash(p1) == hash(p2))  # True

Operator Overloading

class Vector:
    def __init__(self, x, y):
        self.x = x
        self.y = y
    
    def __add__(self, other):
        return Vector(self.x + other.x, self.y + other.y)
    
    def __sub__(self, other):
        return Vector(self.x - other.x, self.y - other.y)
    
    def __mul__(self, scalar):
        return Vector(self.x * scalar, self.y * scalar)
    
    def __repr__(self):
        return f"Vector({self.x}, {self.y})"

v1 = Vector(1, 2)
v2 = Vector(3, 4)

print(v1 + v2)  # Vector(4, 6)
print(v1 - v2)  # Vector(-2, -2)
print(v1 * 3)   # Vector(3, 6)

Container Protocols

class Inventory:
    def __init__(self):
        self.items = {}
    
    def __setitem__(self, key, value):
        self.items[key] = value
    
    def __getitem__(self, key):
        return self.items[key]
    
    def __delitem__(self, key):
        del self.items[key]
    
    def __contains__(self, key):
        return key in self.items
    
    def __len__(self):
        return len(self.items)
    
    def __iter__(self):
        return iter(self.items)

inventory = Inventory()
inventory["sword"] = 1
inventory["shield"] = 1

print("sword" in inventory)  # True
print(len(inventory))  # 2

Practice

Implement a matrix class with full operator overloading.

Advertisement

Need Expert Python Help?

Get personalized tutoring, project support, or professional consulting.

Advertisement