| Você está aqui: Python ::: Dicas & Truques ::: Sobrecarga de Operadores | 
| Como sobrecarregar o operador de adição em Python para efetuar a soma de fraçõesQuantidade de visualizações: 1318 vezes | 
| A sobrecarga de operadores em Python é muito útil quando precisamos estender a funcionalidade dos operadores fornecidos pela linguagem. Nesta dica abordarei a sobrecarga do operador de soma ("+") para mostrar como podemos criar uma classe Fração e usar a sobrecarga de operador para efetuar a soma de dois termos, ou seja, de dois objetos da classe Fração. Sabemos que o operador de adição ("+") é usado em Python para somar dos valores numéricos e também para concatenar strings. Para estender este operador para classes, ou seja, dar um significado diferente a ele, podemos usar a função mágica __add__(self, other), na qual self se refere à instância atual e other se refere à instância cujos dados queremos "somar" com os dados da instância atual. Veja um trecho de código completo contendo a classe Fracao e o método main() para testes. Note que fazemos a soma de duas frações e retornamos o resultado em sua forma simplificada, ou seja, reduzida: ----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
class Fracao:
  # construtor que recebe o numerador e o denominador
  # da fração
  def __init__(self, numerador = 0, denominador = 1):
    self.numerador = numerador
    self.denominador = denominador
 
  # efetua a soma de duad frações
  def __add__(self, outra_fracao):
    # cria a fração resultante
    res = Fracao()
    # o numerador da fração resultante recebe o numerador da
    # segunda fração multiplicado pelo denominador da fração atual
    res.numerador = outra_fracao.numerador * self.denominador
    # o numerador da fração resultante é somado com o produto do
    # denominador da segunda fração pelo numerador da fraçao atual
    res.numerador += outra_fracao.denominador * self.numerador
    # o denormiador da fração resultante recebe o produto do
    # denominador da segunda fração pelo denominador da fração
    # atual
    res.denominador = outra_fracao.denominador * self.denominador
    # faz a simplificação da fração resultante
    res.simplificar()
    return res # retorna a fração resultante
  # permite simplificar a fração
  def simplificar(self):
    maior = self.numerador if self.numerador > self.denominador else self.denominador
    # Máximo Divisor Comum (MDC)
    mdc = 0
    for i in range(2, maior + 1):
      if (self.numerador % i == 0) and (self.denominador % i) == 0:
        mdc = i
		
    if mdc != 0:
      self.numerador /= mdc
      self.denominador /= mdc
  # método que mostra o numerador e denominador desta fração
  def imprimir(self):
    # o resultado é 1/1
    if (self.numerador == 1) and (self.denominador == 1):
      return ("1")
    # o denominador é 1
    elif self.denominador == 1:
      return (str(self.numerador))    
    else:
      return (str(self.numerador) + "/" + (str(self.denominador)))	  
# método principal  
def main():
  # primeira fração
  a = Fracao(4, 3)
  # segunda fração
  b = Fracao(5, 7)
  # fração resultante
  c = a + b
  # mostra o resultado
  print("O resultado é: " + c.imprimir())
if __name__== "__main__":
  main()
Ao executar este código Python nós teremos o seguinte resultado: c:\estudos_python>python estudos.py O resultado é: 43/21 | 
|  Link para compartilhar na Internet ou com seus amigos: | 
| Desafios, Exercícios e Algoritmos Resolvidos de Python | 
| Veja mais Dicas e truques de Python | 
| Dicas e truques de outras linguagens | 
| VB.NET - Como inverter o conteúdo de uma string em VB.NET usando os métodos ToCharArray() e Reverse() Revit Python Shell - Como copiar grupos no Revit usando a função Create.PlaceGroup() e o Revit Python Shell Firebird - Como usar o tipo de dados BLOB do Firebird para a gravação de imagens, vídeos e arquivos de música | 
| E-Books em PDF | ||||
| 
 | ||||
| 
 | ||||
| Linguagens Mais Populares | ||||
| 
			   1º lugar: Java | 


 
 





