def __eq__(self, outra):
return self.url == outra.url
print(objeto == objeto2)
def __eq__(self, outra):
return self.url == outra.url
print(objeto == objeto2)
Oi Caio, tudo bem?
Por gentileza, poste seu código completo para que possamos analisar o porquê do retorno False.
Fico no aguardo.
Aqui esta o codigo:
class ExtratorArgumentoURL:
def __init__(self,url):
if self.stringEhValida(url):
self.url = url.lower()
print("URL valida")
else:
raise LookupError("Url inválida")
@staticmethod
def stringEhValida(url):
if url and url.startswith("https://www.bytebank.com.br"):
return True
else:
return False
def retornaMoedas(self):
buscaMoedaDestino = "moedadestino="
buscaMoedaOrigem = "moedaorigem="
inicioSubstringMoedaOrigem = self.encontraIndiceInicioSubstring(buscaMoedaOrigem)
finalSubstringMoedaOrigem = self.url.find("&")
moedaOrigem = self.url[inicioSubstringMoedaOrigem:finalSubstringMoedaOrigem]
if moedaOrigem == "moedadestino":
self.substituiValorBosta()
inicioSubstringMoedaOrigem = self.encontraIndiceInicioSubstring(buscaMoedaOrigem)
finalSubstringMoedaOrigem = self.url.find("&")
moedaOrigem = self.url[inicioSubstringMoedaOrigem:finalSubstringMoedaOrigem]
inicioSubstringMoedaDestino = self.encontraIndiceInicioSubstring(buscaMoedaDestino)
finalSubstringMoedaDestino = self.url.find("&valor")
moedaDestino = self.url[inicioSubstringMoedaDestino:finalSubstringMoedaDestino]
valor = self.extraiValor()
valor = self.url[valor: ]
return moedaOrigem, moedaDestino, valor
def encontraIndiceInicioSubstring(self, moedaOuValor):
return self.url.find(moedaOuValor) + len(moedaOuValor)
def substituiValorBosta(self):
self.url = self.url.replace("moedadestino", "real", 1)
def extraiValor(self):
SubstringValor = self.url.find("valor")
inicioSubstringValor = SubstringValor + len("valor") + 1
return inicioSubstringValor
def __len__(self):
return len(self.url)
def __str__(self):
moedaOrigem, moedaDestino, valor = self.retornaMoedas()
return "O valor da transacao: {} \nA moeda origem: {} \nA moeda destino: {}".format(valor, moedaOrigem, moedaDestino)
def __eq__(self, outra):
return self.url == outra.url
link = "https://www.bytebank.com.br/cambio?moedaorigem=moedadestino&moedadestino=dolar&valor=700"
objeto = ExtratorArgumentoURL(link)
moedaOrigem, moedaDestino, valor = objeto.retornaMoedas()
objeto2 = ExtratorArgumentoURL(link)
print(objeto.url == objeto2.url)
print(objeto)
print(objeto2)
Caio, o False
está acontecendo porque você chama o objeto.retornaMoedas()
antes de comparar se o objeto1 é igual ao objeto2, e o método retornaMoedas modifica a url
do objeto1, logo, a url do objeto1 e do objeto2 não serão iguais. Para corrigir isso, basta alterar a ordem das operações. Exemplo:
link = "https://www.bytebank.com.br/cambio?moedaorigem=moedadestino&moedadestino=dolar&valor=700"
objeto = ExtratorArgumentoURL(link)
objeto2 = ExtratorArgumentoURL(link)
print(objeto.url == objeto2.url)
moedaOrigem, moedaDestino, valor = objeto.retornaMoedas()
Resultado: True
Qualquer dúvida é só falar. Abraços e bons estudos!
Obrigado Nadia, testei e deu certo! :)