Método de classe
Em sistemas reais, como logs de criação de objetos ou pools de conexão, é comum precisar de um contador global que não dependa de uma instância específica. O @classmethod permite acessar e modificar dados da classe, como um total de instâncias, sem precisar criar um objeto. Isso é útil para funcionalidades como monitoramento ou geração de IDs sequenciais.
O PROBLEMA
Contador com @classmethod que incrementa total a cada nova instância.
EXEMPLO
Contador() → Contador() → Contador.total = 2
SOBRE O CONCEITO
O @classmethod é um decorador que transforma um método em um método de classe, recebendo cls (a própria classe) como primeiro parâmetro, em vez de self (a instância). Dentro dele, você pode alterar atributos da classe, como Contador.total. O erro comum é usar self em vez de cls, o que causaria um NameError porque self não está definido no escopo do método de classe. Neste exercício, total deve ser um atributo da classe, não da instância, e o método __init__ chama o método de classe para incrementar o contador. Lembre-se: cls é como um apelido para a classe, permitindo acesso a atributos e outros métodos de classe.
RESOLUÇÃO