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: 1405 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:
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 |
|
|
Desafios, Exercícios e Algoritmos Resolvidos de Python |
Veja mais Dicas e truques de Python |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |





