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

get_valor_parametro() missing 1 required positional argument: 'parametro_busca'

Eu fiz umas modificações no código seguindo o que foi descrito nas aulas até o momento, mas cheguei num erro.

class ExtratorURL:
    def __init__(self, url):
        self.url = self.sanitiza_url(url)
        self.valida_url()

    def sanitiza_url(self, url):
        return url.strip()

    def valida_url(self):
        if self.url == "":
            raise ValueError("A URL está vazia")

    def get_url_model(self):
        url_model_len = self.url.find("/")
        url_model = self.url[:url_model_len+2]
        return url_model_len
        return url_model

    def get_url_base(self,url_model_len):
        url_site_len = self.url.find("?")
        url_site = self.url[url_model_len+2:url_site_len]
        return url_site_len
        return url_site

    def get_url_parametros(self, url_site_len):
        url_parametros = self.url[url_site_len+1:]
        return url_parametros

    def get_valor_parametro(self, parametro_busca):
       indice_parametro = self.get_url_parametros().find(parametro_busca)
       indice_valor = indice_parametro + len(parametro_busca) + 1
       indice_e_domercial = self.get_url_parametros().find('&', indice_valor)
       if indice_e_domercial == -1:
           valor = self.get_url_parametros()[indice_valor:]
       else:
           valor = self.get_url_parametros()[indice_valor:indice_e_domercial]

       return valor


extrator_url = ExtratorURL("https://bytebank.com/cambio?moedaOrigem=real&moedaDestino=dolar&quantidade=100")
valor_quantidade = ExtratorURL.get_valor_parametro("quantidade")
print(valor_quantidade)

Erro: TypeError: get_valor_parametro() missing 1 required positional argument: 'parametro_busca'

Não entendi bem onde errei, saberiam me ajudar a entender o que houve?

1 resposta
solução!

Oi Rafael :)

Embora o erro diga outra coisa, eu creio que você errou em instanciar o objeto e chamar o método dele.

O que você fez foi instanciar o objeto:

extrator_url = ExtratorURL("https://bytebank.com/cambio?moedaOrigem=real&moedaDestino=dolar&quantidade=100")

mas usar o próprio nome da classe para chamar um método:

valor_quantidade = ExtratorURL.get_valor_parametro("quantidade")

Isso não vai funcionar pois a classe ExtratoURL sozinha não faz nada, e ela em si apenas não contém uma URL para sequer ter o parâmetro "quantidade". Talvez por isso do erro que diz que falta um argumento (pois não foi disponibilizada a URL pro método funcionar).

O certo seria:

valor_quantidade = extrato_url.get_valor_parametro("quantidade")

Pois extrato_url foi o objeto que você criou, e ele, sim, contém a URL necessário pro funcionamento do método.

Espero ter ajudado :)