Dei uma olhada nas dúvidas semelhantes, mas ainda estou com dúvidas.
No meu arquivo main py se eu "printo" a instância 2 (argumentosUrl2) antes de compará-la, eu vejo um True. Se eu comento, um False. Por quê?
main.py
from classe import ExtratorArgumentosUrl
url = "https://bytebank.com/cambio?moedaorigem=moedaDestino&moedaDestino=dolar&valor=700"
argumentosUrl = ExtratorArgumentosUrl(url)
argumentosUrl2 = ExtratorArgumentosUrl(url)
print(len(argumentosUrl))
print(argumentosUrl, id(argumentosUrl),"\n-----------------------------------")
# print(argumentosUrl2, id(argumentosUrl2))
print(argumentosUrl == argumentosUrl2)classe.py
# -*- coding: utf-8 -*-
class ExtratorArgumentosUrl:
    def __init__(self, url):
        if self.url_eh_valida(url):
            self.url = url.lower()
        else:
            raise LookupError("URL inválida")
    def __str__(self):
        moeda_origem, moeda_destino = self.extrai_argumentos()
        valor = self.extrai_valor()
        return f'Moeda origem: {moeda_origem}\nMoeda destino: {moeda_destino}\nValor: {valor}\n'
    def __len__(self):
        return len(self.url)
    def __eq__(self,outra_instancia):
        print(self.url,"\n",outra_instancia.url) # debug
        return self.url == outra_instancia.url
    @staticmethod
    def url_eh_valida(url):
        if url and url.startswith("https://bytebank.com"):
            return True
        else:
            return False
    def extrai_argumentos(self):
        busca_moeda_origem = "moedaorigem="
        busca_moeda_destino = "moedadestino="
        indice_inicial_moeda_origem = self.encontra_indice_inicial(busca_moeda_origem)
        indice_final_moeda_origem = self.url.find("&")
        moeda_origem = self.url[indice_inicial_moeda_origem:indice_final_moeda_origem]
        if moeda_origem == "moedadestino":
            self.troca_moeda_origem()
            indice_inicial_moeda_origem = self.encontra_indice_inicial(busca_moeda_origem)
            indice_final_moeda_origem = self.url.find("&")
            moeda_origem = self.url[indice_inicial_moeda_origem:indice_final_moeda_origem]
        indice_inicial_moeda_destino = self.encontra_indice_inicial(busca_moeda_destino)
        indice_final_moeda_destino = self.url.find("&valor=")
        moeda_destino = self.url[indice_inicial_moeda_destino:indice_final_moeda_destino]
        return moeda_origem, moeda_destino
    def encontra_indice_inicial(self, moeda_buscada):
        return self.url.find(moeda_buscada) + len(moeda_buscada)
    def troca_moeda_origem(self):
        self.url = self.url.replace("moedadestino","real",1)
    def extrai_valor(self):
        busca_valor = "valor="
        indice_inicial_valor = self.encontra_indice_inicial(busca_valor)
        valor = self.url[indice_inicial_valor:]
        return valor