1
resposta

Tentei substituir get por property e deu isso

No original do professor está assim:

def get_url_parametros(self):
    indice_interrogacao = self.url.find("?")
    url_base = self.url[indice_interrogacao + 1:]
    return url_base

Eu substitui por


    @property
    def url_parametros(self):
        indice_interrogacao = self.url.find("?")
        url_base = self.url[indice_interrogacao + 1:]
        return url_base

e deu certo. Em seguida substitui

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

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

por

@property
def valor_parametro(self, parametro_busca):
    indice_parametro = self.url_parametros.find(parametro_busca)
    indice_valor = indice_parametro + len(parametro_busca) + 1
    indice_e_comercial = self.url_parametros.find('&', indice_valor)
    if indice_e_comercial == -1:
        valor = self.url_parametros[indice_valor:]
    else:
        valor = self.url_parametros[indice_valor:indice_e_comercial]
    return valor

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

e não funcionou. Por quê?

1 resposta

Acho que quando vc adiciona o decorator @property, o método passa a ser "non callable", ou seja, não sendo possível invoca-lo com as paresnteses.