classmethod() Decorador de método de classe
Última atualização: 2026-09-22
classmethod() Decorador de método de classe
@classmethod marca um método como método de classe, cujo primeiro parâmetro é cls (a própria classe).
| Categoria | Funções internas |
|---|---|
| Tipo | Função interna |
| Versão do Python | all |
📝 Sintaxe
@classmethod
def func(cls, ...)
⚙️ Parâmetros
| function Obrigatório | The function to wrap as a class method. |
|---|
Retorno:A classmethod descriptor, usable as a decorator.
💥 Exceções
TypeError— Raised when the argument is not callable.
▶ Exemplo
Edite o código, clique em Executar e veja o resultado no painel de saída:
Saída:
2
🏷️ Funções internas relacionadas
💡 Casos relacionados
Mais estudos de caso em breve — aguarde.
❓ Perguntas frequentes
QQual é a diferença entre classmethod e staticmethod?
Aclassmethod recebe como primeiro argumento cls (a própria classe), permitindo acessar atributos de classe e chamar outros métodos de classe; staticmethod não recebe nenhum argumento especial e é como uma função comum.
QUm método de classe pode ser chamado por uma instância?
ASim, tanto C().inc() quanto C.inc() funcionam; chamando pela classe ou pela instância, o primeiro argumento do classmethod é sempre a própria classe.
QPara que servem normalmente os métodos de classe?
APara métodos de fábrica (como Date.today()), acessar ou modificar atributos de classe, e definir construtores alternativos para criação polimórfica.
QPor que cls.count += 1 num método de classe modifica a variável de classe?
APorque cls é a própria classe; modificar por cls altera o atributo de classe. Se escrever self.count, vira um atributo de instância — são coisas diferentes.