Olá, como você está?
Peço desculpas pela demora em obter um retorno.
Não há contraindicação neste cenário, pois quando um método não depende do estado do objeto (self
), ele pode, sim, ser definido como um método estático ou de classe. No entanto, a título de didática, visando simplificar o aprendizado, não foi utilizado um método estático ou de classe para este método.
Todavia, no caso específico do método sanitiza_url
, ele poderia ser definido como um método estático sem efeitos colaterais no código. Para isso, basta adicionar o decorador @staticmethod
acima da definição do método, como mostro abaixo:
class ExtratorURL:
def __init__(self, url):
self.url = ExtratorURL.sanitiza_url(url)
self.valida_url()
@staticmethod
def sanitiza_url(url):
if type(url) == str:
return url.strip()
else:
return ""
Vale ressaltar que quando um método não precisa de nenhum atributo de instância para ser executado, podemos defini-lo como método estático. Já quando um método precisa de atributos de classe, mas não precisa de atributos de instância, podemos defini-lo como método de classe. Ou seja, a diferença entre os dois é que um método de classe recebe a classe como primeiro argumento (cls
ao invés de self
) e pode acessar ou modificar o estado da classe, enquanto um método estático não precisa de nenhum argumento específico e não pode acessar ou modificar o estado da classe.
Espero ter ajudado. Não hesite em voltar ao fórum para continuar aprendendo e interagindo com a comunidade.
Em caso de dúvidas estou à disposição.
Abraços e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!