--- title: "Python Operator Overloads" date: 2020-03-13T20:49:28-04:00 draft: false tags: ["Python"] medium_enabled: true --- I wrote a [blog post about operator overloads](/blog/cppoverloads/) in C++. Luckily for Python it is heavily document in what is called the [Python Data Model](https://docs.python.org/3/reference/datamodel.html). Though for the sake of having content, I'll share some of the ones that I heavily use in my classes. | Operator | Method | | -------- | ---------------------- | | `+` | `__add__(self, other)` | | `==` | `__eq__(self, other)` | | `len()` | `__len__(self)` | | `str()` | `__str__(self)` | | `hash()` | `__hash__(self)` | Example Usage: ```python class Test: def __init__(self, x): self.x = x def __add__(self, other): return Test(self.x, other.x) def __eq__(self, other): return self.x == other.x def __len__(self): return len(self.x) def __str__(self): return self.x def __hash__(self): return hash(self.x) ```