7.5 Classes e Objetos em Python: Métodos Especiais

Na linguagem Python, tudo é um objeto, incluindo os tipos de dados primitivos. As classes fornecem uma maneira de empacotar dados e funcionalidade juntos. Ao criar uma nova classe, criamos um novo tipo de objeto, permitindo que novas instâncias desse tipo sejam feitas. Cada instância de classe pode ter atributos anexados a ela para manter seu estado. As instâncias de classe também podem ter métodos (definidos pela sua classe) para modificar seu estado.

Os métodos especiais são um recurso chave do Python, permitindo que você crie classes que se comportem como tipos de dados embutidos. Isso significa que você pode usar métodos especiais para sobrecarregar operadores padrão e funções para que eles trabalhem com suas classes personalizadas. Esses métodos especiais são sempre cercados por duplos sublinhados (__) e são conhecidos como "dunder methods".

__init__ Método

O método __init__ é um método especial que é chamado automaticamente quando um objeto é criado a partir de uma classe. Este método é tipicamente usado para realizar qualquer inicialização necessária. Aqui está um exemplo:

class MyClass:
  def __init__(self):
    self.data = []

Neste exemplo, o método __init__ é usado para inicializar o atributo de dados para cada nova instância da classe MyClass.

__str__ e __repr__ Métodos

Os métodos __str__ e __repr__ são usados para fornecer representações de string de um objeto. O método __str__ é chamado pela função str(obj) e pela função print para converter o objeto em uma string. O método __repr__ é usado para fornecer uma representação de string que pode ser usada para recriar o objeto usando a função eval().

class MyClass:
  def __init__(self, name):
    self.name = name

  def __str__(self):
    return f'MyClass({self.name})'

  def __repr__(self):
    return f'MyClass({self.name})'

__eq__ e __ne__ Métodos

Os métodos __eq__ e __ne__ são usados para sobrecarregar os operadores de igualdade e desigualdade. O método __eq__ é chamado quando dois objetos são comparados usando o operador de igualdade (==). O método __ne__ é chamado quando o operador de desigualdade (!=) é usado.

class MyClass:
  def __init__(self, name):
    self.name = name

  def __eq__(self, other):
    if isinstance(other, MyClass):
      return self.name == other.name
    return False

  def __ne__(self, other):
    return not self.__eq__(other)

Métodos de Operadores Aritméticos

Existem vários métodos especiais que podem ser usados para sobrecarregar operadores aritméticos, incluindo __add__, __sub__, __mul__, __truediv__, e muitos outros. Cada um desses métodos é chamado quando o operador correspondente é usado em objetos da classe.

Por exemplo, aqui está como você poderia sobrecarregar o operador de adição para uma classe que representa um vetor matemático:

class Vector:
  def __init__(self, x, y):
    self.x = x
    self.y = y

  def __add__(self, other):
    if isinstance(other, Vector):
      return Vector(self.x + other.x, self.y + other.y)
    else:
      raise TypeError('Vectors can only be added to other vectors.')

Essa é apenas uma introdução aos métodos especiais em Python. Existem muitos outros métodos especiais disponíveis que permitem que você personalize o comportamento de suas classes de maneiras poderosas e flexíveis.

Agora responda o exercício sobre o conteúdo:

_Qual dos seguintes métodos especiais é chamado automaticamente quando um objeto é criado a partir de uma classe em Python?

Você acertou! Parabéns, agora siga para a próxima página

Você errou! Tente novamente.

Imagem do artigo Classes e objetos em Python: Construtores e destrutores

Próxima página do Ebook Gratuito:

42Classes e objetos em Python: Construtores e destrutores

3 minutos

Ganhe seu Certificado deste Curso Gratuitamente! ao baixar o aplicativo Cursa e ler o ebook por lá. Disponível na Google Play ou App Store!

Disponível no Google Play Disponível no App Store

+ de 6,5 milhões
de alunos

Certificado Gratuito e
Válido em todo o Brasil

48 mil exercícios
gratuitos

4,8/5 classificação
nas lojas de apps

Cursos gratuitos em
vídeo, áudio e texto