🎯 Métodos Especiais em Python
Em poucas palavras
Definição técnica ou simplificada do conceito.
📝 Notas e Desenvolvimento
Em Python, métodos especiais (também conhecidos como “métodos mágicos” ou “dunder methods” - de “double underscore”) são métodos predefinidos que têm um significado especial para o interpretador Python. Eles permitem que você personalize o comportamento de suas classes e objetos, tornando-os mais integrados à linguagem.
Esses métodos são sempre definidos com dois underscores (__) antes e depois do nome.
Exemplos:
__init__: Construtor da classe (inicializa um novo objeto).__str__: Representação em string do objeto (usado porprint()estr()).__repr__: Representação “oficial” do objeto (usado para depuração e em alguns casos pelo interpretador).__len__: Retorna o comprimento do objeto (usado porlen()).__getitem__: Permite acessar elementos do objeto usando a sintaxe de índice (por exemplo,objeto[0]).__setitem__: Permite definir elementos do objeto usando a sintaxe de índice (por exemplo,objeto[0] = valor).__delitem__: Permite deletar elementos do objeto usando a sintaxe de índice (por exemplo,del objeto[0]).__add__: Define o comportamento do operador de adição (+).__mul__: Define o comportamento do operador de multiplicação (*).__eq__: Define o comportamento do operador de igualdade (==).__lt__: Define o comportamento do operador “menor que” (<).__gt__: Define o comportamento do operador “maior que” (>).__del__: Destrutor da classe (executado quando um objeto está prestes a ser destruído).
Exemplo: Classe Vector
O código abaixo mostra a implementação de uma classe Vector que define alguns métodos especiais para realizar operações com vetores:
import math
class Vector:
def __init__(self, x=0, y=0):
self.x = x
self.y = y
def __repr__(self):
return f'Vector({self.x!r}, {self.y!r})'
def __abs__(self):
return math.hypot(self.x, self.y)
def __bool__(self):
return bool(abs(self))
def __add__(self, other):
x = self.x + other.x
y = self.y + other.y
return Vector(x, y)
def __mul__(self, scalar):
return Vector(self.x * scalar, self.y * scalar)Explicação:
__init__(self, x=0, y=0): Inicializa um novo vetor com as coordenadasxey.__repr__(self): Retorna uma representação do vetor que pode ser usada para recriá-lo (por exemplo,Vector(3, 4)). O!rgarante que as strings sejam representadas com aspas.__abs__(self): Retorna o módulo (comprimento) do vetor.__bool__(self): RetornaTruese o vetor tiver comprimento diferente de zero,Falsecaso contrário.__add__(self, other): Retorna um novo vetor que é a soma deste vetor com outro vetor.__mul__(self, scalar): Retorna um novo vetor que é este vetor multiplicado por um escalar.
Exemplo de uso:
v1 = Vector(3, 4)
v2 = Vector(1, 2)
print(v1) # Output: Vector(3, 4)
print(abs(v1)) # Output: 5.0
print(bool(v1)) # Output: True
print(v1 + v2) # Output: Vector(4, 6)
print(v1 * 2) # Output: Vector(6, 8)Importância:
Os métodos especiais permitem que você crie classes que se comportam de forma natural e intuitiva em Python. Eles são fundamentais para a criação de código expressivo e idiomático.
Referência:
🔗 Conexões e Contexto
- Atlas: MdC - Programação
- Notas Relacionadas: