Em [[Classes em Python]], é possível personalizar o comportamento dos operadores (como `+`, `-`, `*`, etc.) quando aplicados a objetos da sua classe. Isso é feito através de métodos especiais, também conhecidos como "métodos mágicos" ou "dunder methods" (devido aos dois underscores no início e no fim do nome). **Exemplo:** A classe `Vault` (cofre) abaixo simula um cofre que armazena moedas (galleons, sickels e knuts). O método `__add__` é definido para permitir a soma de dois cofres: ```python class Vault(): #Removi os argumentos da classe, pois não faziam sentido def __init__(self, galleons=0, sickels=0, knuts=0): self.galleons = galleons self.sickels = sickels self.knuts = knuts def __str__(self): return f"{self.galleons} Galleons, {self.sickels} Sickels, {self.knuts} Knuts" def __add__(self, other): galleons = self.galleons + other.galleons sickels = self.sickels + other.sickels knuts = self.knuts + other.knuts return Vault(galleons, sickels, knuts) potter = Vault(100,50,25) weasley = Vault(25,50,100) print(potter + weasley) # Output: 125 Galleons, 100 Sickels, 125 Knuts ``` * `__init__(self, galleons=0, sickels=0, knuts=0)`: O construtor da classe, que inicializa o cofre com quantidades de cada moeda. * `__str__(self)`: Define como o objeto `Vault` será representado como uma string (quando usado com `print()`, por exemplo). * `__add__(self, other)`: Define o comportamento do operador `+`. Quando dois objetos `Vault` são somados, este método é chamado. Ele cria um novo objeto `Vault` com a soma das moedas de cada cofre. **Outros operadores:** Além de `__add__`, existem outros métodos especiais para modificar o comportamento de diferentes operadores: * `__sub__(self, other)`: Subtração (`-`) * `__mul__(self, other)`: Multiplicação (`*`) * `__div__(self, other)`: Divisão (`/`) * `__eq__(self, other)`: Igualdade (`==`) * `__ne__(self, other)`: Desigualdade (`!=`) * `__lt__(self, other)`: Menor que (`<`) * `__gt__(self, other)`: Maior que (`>`) * `__le__(self, other)`: Menor ou igual a (`<=`) * `__ge__(self, other)`: Maior ou igual a (`>=`) **Referência:** * [Página do W3schools sobre aulas em Python](https://www.w3schools.com/python/python_classes.asp)