Essa pergunta já foi feita e respondida, porem ainda persiste uma duvida.
Como que o valor do objeto "extrator_url_2" foi parar dentro do other, se ele não foi declarado dentro do código?
def __eq__(self, other):
return self.url == other.url
url = "bytebank.com/cambio?quantidade=100&moedaOrigem=real&moedaDestino=dolar"
extrator_url = ExtratorURL(url)
extrator_url_2 = ExtratorURL(url)
Na minha opinião, caso eu possa estar correta! É que foram instanciados dois objetos "extrator_url" e "extrator_url_2", e como a execução é feita linha após linha, o other assume que o segundo valor a ser comparado é o "extrator_url_2" que é o próximo elemento na fila/linha de execução, já que o primeiro já foi passado pelo self. Mesmo que esse valor não tenha sido declarado anteriormente.
É mais ou menos isso?