O que eu acho mais legal em C++ é que ele permite reescrever operadores. Então, eu vi que dá para fazer o mesmo em Python!
Para um exemplo prático, vamos criar uma classe Fracao. Esta possui duas propriedades (numerador e denominador), um construtor com dois parâmetros inteiros, um método add (que faz a soma dos objetos da classe Fracao) e um método para transformar em string:
#Exemplo de como reescrever operadores
#Fracao é uma classe que define números fracionados
class Fracao:
#Construtor da classe
def __init__(self, numerador, denominador):
#Cria e seta a propriedade numerador
self.numerador = numerador
#Cria e seta a propriedade denominador
self.denominador = denominador
#Reescreve o operador "+" (faz a soma de duas frações e retorna um resultado que também é uma fração)
def __add__(self, f):
resultado = Fracao(self.numerador * f.denominador + f.numerador * self.denominador, self.denominador * f.denominador)
return resultado
#Reescreve a função str para transformar os valores em string
def __str__(self):
return str(self.numerador) + "/" + str(self.denominador)
Agora, vamos executar as seguintes instruções:
a = Fracao(5,2)
b = Fracao(1,3)
c = a + b
print c
E veja o que aparece. (legal, não? :))
2 comentários:
qual significado da variavel 'f' em __add__ e como seu valor é obtido?
A variável f representa um outro objeto Fracao que será usado na adição, por exemplo, se tenho:
c = a + b
ele executará o método passando a e b:
__add__(a, b)
Este método é um dos que reescrevem operadores em Python. Se quiser mais informações, acesse:
https://docs.python.org/2/library/operator.html
Valeu! :)
Postar um comentário