🎯 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 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:


🔗 Conexões e Contexto


📚 Referências e Fontes

Citações Diretas