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 !?
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 !?
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!