website/content/blog/pythonoverloads.md

37 lines
1 KiB
Markdown
Raw Permalink Normal View History

2020-03-13 21:43:37 -04:00
---
title: "Python Operator Overloads"
date: 2020-03-13T20:49:28-04:00
draft: false
2022-01-02 14:24:29 -05:00
tags: ["Python"]
2023-01-05 14:04:45 -05:00
medium_enabled: true
2020-03-13 21:43:37 -04:00
---
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.
2020-03-13 21:43:37 -04:00
| 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)
```