Enviar um café pro programador

Atributos de Classe

Neste tutorial, vamos aprender o que são os atributos de classe, para que servem, a ideia por trás do conceito bem como usá-los.

Baixe nossa apostila e tenha todo o conteúdo em PDF:
Apostila Python Progressivo

Atributos Gerais de Classe

Como bem explanado e repetido em nossa seção de Orientação a Objetos em Python, uma das grandes vantagens de usar este paradigma é a possibilidade de escrever o código apenas uma vez (ao definir a classe) e depois simplesmente sair instanciando (ou seja, criando) objetos.

Podemos criar milhões de objetos, fácil e rapidamente.

E cada um deles terá seus métodos e atributos próprios e únicos.

Porém, muitas vezes é interessante ter informações gerais, ou seja, um mesmo dado, um mesmo atributo presente em todos os objetos.

Veja bem: uma única variável, presente e passível de ser acessada e modificada por todos os objetos. Não é cada objeto ter sua variável, isso já sabemos como fazer.

Atributos de classes são aquelas variáveis que são únicas, só tem ela, e ela está presente em todos os objetos.

Como usar Atributos de Classe

Vamos usar a variável count na classe Funcionario.
Ela é definida na classe inicialmente com valor 0, pois ainda não foi contratado nenhum funcionário.

Vamos armazenar os objetos (funcionários), numa lista func.

A ideia é: sempre que instanciarmos um funcionário, somamos 1 ao contador count.
Para fazermos isso no atributo de classe (e não no atributo de cada objeto), não usamos self.


Usamos a variável: Funcionario.count
Ao usar assim, todo objeto vai agir e somar 1, quando for criado, nesse atributo geral, de classe.

Veja bem:
  • self.count -> vai atuar em um objeto, especificamente
  • Funcionario.count -> todos vão atuar numa mesma variável, o atributo de classe

Veja nosso código onde você pode ir contratando quantos funcionários quiser.
Note que sempre que criamos um funcionário, incrementamos o contador e mostramos o total de funcionários existentes na empresa:

class Funcionario:
 count = 0
 def __init__(self, nome):
  self.__nome = nome
  print(nome, "contratado!")
  Funcionario.count +=1
  print("Numero de funcionarios:", Funcionario.count)
  
op=1
func = []
while op:
 op=int(input("0. Sair\n1. Criar funcionario\n"))
 
 if op==1:
  nome = input("Nome: ")
  func.append( Funcionario(nome) )
  

Vale ressaltar que é possível acessar o atributo count mesmo que você não tenha instanciado objeto algum, ok?

Leia: Como se tornar um programador Python profissional

Nenhum comentário:

Postar um comentário