[Andrews Medina] a diferença entre atributos de classe e de instância

“Qual a diferença entre atributos de classe e de instância em Python?”

Essa é uma dúvida muito comum e bem simples de ser respondida. Mas, antes de repondê-la vou demonstrar o que é um atributo de classe e de instância.

atributo de classe

São atributos que são definidos diretamente a classe.

atributo de instância

São atributos definidos a instância, geralmente através do “self”, que representa a instância de uma classe.

Qual a diferença entre eles?

A diferença é que atributos de classes são compartilhados por todas as instâncias daquela classe. Atributos de instancia são únicos para cada instância.

Por exemplo, todas as modificações feitas na lista “l” da classe “C” afetara a lista para todas as instâncias de “C” pois “l” é um atributo da classe.

Já com as instâncias da classe “D” isso não ocorre pois “l” é um atributo de instância, sendo único para cada instância de “D”:

É importante conhecer esse comportamento para não ter resultados inesperados ao construir uma classe.