Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro - AttributeError: 'ExtratorArgumentosUrl' object has no attribute 'find'

class ExtratorArgumentosUrl:
    def __init__(self, url):
        if self.urlEhValida(url):
            self.url = url
        else:
            raise LookupError('Url Inválida')

    @staticmethod
    def urlEhValida(url):
        if url:
            return True
        else:
            return False

    def extraiArgumentos(self):
        indiceInicialMoedaDestino = self.url.find('=', + 15) + 1
        indiceInicialMoedaOrigem  = self.url.find('=') + 1
        indiceFinalMoedaOrigem    = self.url.find('&')

        moedaOrigem = self.url[indiceInicialMoedaOrigem:indiceFinalMoedaOrigem]
        moedaDestino = self.url[indiceInicialMoedaDestino:]

        return moedaOrigem, moedaDestino

Além do meu código não funcionar eu não estou entendendo como eu poderia usar o método .find() num objeto sem dar erro, pois acredito que seria necessario antes transformar o objeto em string, correto?

Alguém poderia me auxiliar nessa dúvida?

1 resposta
solução!

Oi Igor, tudo bem com você?

Como está o seu arquivo main.py?

O método find é utilizado em tipos str e como estamos passando uma string como argumento para classe ExtratorArgumentosUrl não é necessário transformar em str. Já que a string passada é uma str e por padrão tem acesso ao método find. Veja:

class ExtratorArgumentosUrl:
    def __init__(self, url):
        if self.urlEhValida(url):
            self.url = url
        else:
            raise LookupError('Url Inválida')

    @staticmethod
    def urlEhValida(url):
        if url:
            return True
        else:
            return False

    def extraiArgumentos(self):
        indiceInicialMoedaDestino = self.url.find('=', 15) + 1

        indiceInicialMoedaOrigem  = self.url.find('=') + 1
        indiceFinalMoedaOrigem    = self.url.find('&')

        moedaOrigem = self.url[indiceInicialMoedaOrigem:indiceFinalMoedaOrigem]
        moedaDestino = self.url[indiceInicialMoedaDestino:]

        return moedaOrigem, moedaDestino

# arquivo main.py
url = "moedaorigem=real&moedadestino=dolar"
argumentosUrl = ExtratorArgumentosUrl(url)
moedaOrigem, moedaDestino = argumentosUrl.extraiArgumentos()
print(moedaDestino, moedaOrigem)

No arquivo main, criamos uma instância da classe ExtratorArgumentosUrl e passamos como parâmetro uma string, a url. Diante disso, através do objeto argumentosUrl, estamos chamando o método para extrair os argumentos. Com isso, obtemos o resultado esperado.

Ficou mais claro?

Qualquer dúvida é só falar, estou a disposição. Abraços e bons estudos!