Atributo de classe
Em sistemas reais, muitas vezes você precisa armazenar informações que são comuns a todos os objetos de uma classe, como o nome da empresa em que todos os funcionários trabalham. Em vez de repetir esse dado em cada funcionário, você usa um atributo de classe, que é compartilhado. Isso economiza memória e facilita mudanças futuras — se a empresa mudar de nome, você altera em um só lugar.
O PROBLEMA
Classe Funcionario com atributo empresa='TechCorp' e instância nome, salario.
EXEMPLO
Funcionario.empresa → TechCorp
SOBRE O CONCEITO
Atributos de classe pertencem à classe em si, não a uma instância específica. Eles são definidos diretamente no corpo da classe, como em empresa = 'TechCorp'. Cada instância criada acessa esse mesmo valor, a menos que você crie um atributo de instância com o mesmo nome. O erro comum é tentar modificar o atributo de classe via instância, como funcionario1.empresa = 'NovaEmpresa'. Isso cria um atributo de instância que 'esconde' o de classe, e as outras instâncias continuam vendo o original. Para alterar o valor compartilhado, você deve modificar diretamente na classe, com Funcionario.empresa = 'NovaEmpresa'.
RESOLUÇÃO