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

[Dúvida] duvida sobre __Len__

porque invés de usar

extrator_url = ExtratorURL(url)
print("O tamanho da URL: ", len(extrator_url))

usasse

extrator_url = ExtratorURL(url)
print("O tamanho da URL:", len(url))

que já vai direto pra url, sempre precisa usa def !?

1 resposta
solução!

Oi, tudo certo por aí?

No primeiro exemplo que você mencionou, temos o método len() sendo aplicado diretamente na string da URL. Isso funciona porque a classe str (que dá origem a uma string) já possui o método __len__() implementado, que retorna o tamanho da string.

No segundo exemplo, temos o método len() em um objeto da classe ExtratorURL. No entanto, a classe ExtratorURL não possui o método __len__() implementado por padrão — uma vez que, ao criá-la, não especificamos tal característica.

Para resolver esse problema, precisamos implementar o método __len__() na classe ExtratorURL. Esse método deverá retornar o tamanho da URL, assim como você fez no método __len__() da classe str. Observe o exemplo abaixo:

class ExtratorURL:
    # restante do código vem aqui!

    def __len__(self):
        return len(self.url)

Dessa forma, quando você chamar o método len() em um objeto da classe ExtratorURL, ele irá retornar o tamanho da URL.

A utilização de def, neste caso, é importante, haja vista que é a maneira pela qual definimos métodos especiais, em uma classe, no Python.

Espero que tenha ficado mais claro! Qualquer dúvida, fico à disposição.

Um abraço!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!