🎯 Modificadores de Operação em Classes do Python
Em poucas palavras
Definição técnica ou simplificada do conceito.
📝 Notas e Desenvolvimento
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:
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 objetoVaultserá representado como uma string (quando usado comprint(), por exemplo).__add__(self, other): Define o comportamento do operador+. Quando dois objetosVaultsão somados, este método é chamado. Ele cria um novo objetoVaultcom 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:
🔗 Conexões e Contexto
- Atlas: MdC - Programação
- Notas Relacionadas: