Métodos Especiais
Em Python, existem métodos especiais, também conhecidos como métodos mágicos ou métodos dunder (double underscore methods), que começam e terminam com dois sublinhados (__
). Esses métodos permitem que você personalize o comportamento padrão de objetos em operações comuns, como adição, subtração, impressão e comparação. Neste tutorial, vamos explorar alguns dos métodos especiais mais comuns em Python e como você pode usá-los para personalizar o comportamento das suas classes.
1. Método __init__
: Construtor da Classe
O método __init__
é usado como o construtor da classe e é chamado quando você cria uma nova instância da classe.
class Pessoa:
def __init__(self, nome, idade):
self.nome = nome
self.idade = idade
pessoa = Pessoa("Alice", 30)
2. Método __str__
: Representação de String da Classe
O método __str__
retorna uma representação de string da instância da classe e é usado quando você chama a função print()
.
class Pessoa:
def __init__(self, nome, idade):
self.nome = nome
self.idade = idade
def __str__(self):
return f"{self.nome}, {self.idade} anos"
pessoa = Pessoa("Alice", 30)
print(pessoa) # Saída: Alice, 30 anos
3. Método __len__
: Tamanho da Classe
O método __len__
retorna o tamanho da instância da classe e é usado quando você chama a função len()
.
class ListaPersonalizada:
def __init__(self, elementos):
self.elementos = elementos
def __len__(self):
return len(self.elementos)
lista = ListaPersonalizada([1, 2, 3, 4, 5])
print(len(lista)) # Saída: 5
4. Método __add__
: Adição Personalizada
O método __add__
permite que você personalize a operação de adição para objetos da sua classe.
class Ponto:
def __init__(self, x, y):
self.x = x
self.y = y
def __add__(self, outro_ponto):
novo_x = self.x + outro_ponto.x
novo_y = self.y + outro_ponto.y
return Ponto(novo_x, novo_y)
ponto1 = Ponto(1, 2)
ponto2 = Ponto(3, 4)
resultado = ponto1 + ponto2
print(f"({resultado.x}, {resultado.y})") # Saída: (4, 6)
5. Método __eq__
: Igualdade Personalizada
O método __eq__
permite que você personalize a operação de igualdade para objetos da sua classe.
class Pessoa:
def __init__(self, nome, idade):
self.nome = nome
self.idade = idade
def __eq__(self, outra_pessoa):
return self.nome == outra_pessoa.nome and self.idade == outra_pessoa.idade
pessoa1 = Pessoa("Alice", 30)
pessoa2 = Pessoa("Alice", 30)
print(pessoa1 == pessoa2) # Saída: True
Os métodos especiais em Python permitem que você personalize o comportamento das suas classes para operações comuns. Compreender como implementar métodos como __init__
, __str__
, __len__
, __add__
e __eq__
oferece um controle poderoso sobre como os objetos da sua classe interagem com operações e funções embutidas do Python.