PythonPOObasico

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

Mais exercícios de POO

PYPOI2I · IntermediárioHerança simplesPYPOI1I · IntermediárioProperty e setterPYPOI5I · IntermediárioClasse abstrataPYPOO7B · BásicoMétodo estático
Ver todos os exercícios de Python