Professor, boa noite
Qual a diferença entre usar o classmethod e o static method?
Obrigado
Professor, boa noite
Qual a diferença entre usar o classmethod e o static method?
Obrigado
Oi Thiago, um método de classe (classmethod
) recebe a classe como primeiro argumento implícito, assim como um método de instância recebe a instância.
classe MinhaClasse:
@classmethod
def metodo (cls, arg1, arg2, ...):
#código aqui
Serve para definir um método que opera na classe e é chamado pela própria classe. Seu uso mais comum é em construtores alternativos.
Um método estático não recebe um primeiro argumento implícito. Para declarar um método estático, faça:
class MinhaClasse:
@staticmethod
def metodo(arg1, arg2, ...):
#código aqui
É como uma função simples que reside no corpo de uma classe em vez de ser definida no nível do módulo.
Outra coisa é que o uso do @classmethod
é mais útil quando usado em herança, já que a classe é levada em consideração. Alguns programadores questionam o uso do @staticmethod
(por parecer não ter muita utilidade) e por este motivo é mais comum o uso do @classmethod
.
Espero ter ajudado e bons estudos!
Entendi!! Como ficaria a chamada dessa classe?
Mais uma pergunta, o que seriam estes "construtores alternativos"?