mirror of
https://github.com/Brandon-Rozek/website.git
synced 2024-11-22 16:26:28 -05:00
36 lines
1 KiB
Markdown
36 lines
1 KiB
Markdown
|
---
|
||
|
title: "Python Operator Overloads"
|
||
|
date: 2020-03-13T20:49:28-04:00
|
||
|
draft: false
|
||
|
tags: []
|
||
|
---
|
||
|
|
||
|
I wrote a [blog post about operator overloads](https://brandonrozek.com/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)
|
||
|
```
|
||
|
|