Variáveis e métodos de classe (estáticos) em Python

Ana Maria Gomes
6 minutos de leitura

Conteúdos do tutorial

Ao trabalhar com Python, entender como criar e usar variáveis e métodos de classe (estáticos) é essencial para escrever um código eficiente e organizado. Neste artigo, vamos explorar como definir variáveis e métodos de classe, e discutir algumas das nuances que vêm com eles.

Definindo Variáveis de Classe

Variáveis de classe, também conhecidas como variáveis estáticas, são declaradas dentro de uma classe, mas fora de quaisquer métodos de instância. Essas variáveis são compartilhadas por todas as instâncias da classe. Aqui está um exemplo simples:

class MinhaClasse:
    variavel_estatica = 3

print(MinhaClasse.variavel_estatica)  # Saída: 3
Testar

No exemplo acima, variavel_estatica é uma variável de classe que armazena o valor 3. Dessa forma, ela pode ser acessada diretamente através da classe sem criar uma instância.

Variáveis de Instância vs Variáveis de Classe

É importante notar que variáveis de classe são distintas de variáveis de instância. Variáveis de instância são únicas para cada instância da classe, enquanto variáveis de classe são compartilhadas. Aqui está uma ilustração:

class MinhaClasse:
    variavel_estatica = 3

# Criar uma instância de MinhaClasse
minha_instancia = MinhaClasse()

# Acessar a variável de classe através da instância
print(minha_instancia.variavel_estatica)  # Saída: 3

# Atribuir um novo valor à variável de instância
minha_instancia.variavel_estatica = 4

# A variável de classe permanece inalterada
print(MinhaClasse.variavel_estatica)  # Saída: 3

# A variável de instância agora possui um valor diferente
print(minha_instancia.variavel_estatica)  # Saída: 4
Testar

Neste exemplo, vemos que mudar o valor de variavel_estatica através de uma instância não afeta a variável de classe. Em vez disso, cria-se uma nova variável de instância com o mesmo nome.

Definindo Métodos Estáticos

Métodos estáticos em Python são métodos que estão vinculados à classe e não aos seus objetos. Eles não requerem uma instância da classe para serem chamados. Métodos estáticos são definidos usando o decorador @staticmethod:

class MinhaClasse:
    @staticmethod
    def meu_metodo_estatico():
        print("Este é um método estático.")

MinhaClasse.meu_metodo_estatico()  # Isso imprimirá: "Este é um método estático."
Testar

Métodos estáticos não têm acesso à classe ou instância, a menos que explicitamente fornecidos. Eles podem ser chamados na própria classe ou em instâncias da classe.

Usando Métodos de Classe

Métodos de classe são semelhantes aos métodos estáticos, mas recebem a classe como primeiro argumento, normalmente nomeado cls. Isso permite que métodos de classe acessem e modifiquem o estado da classe. Métodos de classe são definidos usando o decorador @classmethod:

class MinhaClasse:
    variavel_estatica = 3

    @classmethod
    def meu_metodo_de_classe(cls):
        cls.variavel_estatica += 1
        print(f"Novo valor de variavel_estatica: {cls.variavel_estatica}")

MinhaClasse.meu_metodo_de_classe()  # Isso imprimirá: "Novo valor de variavel_estatica: 4"
Testar

No exemplo acima, meu_metodo_de_classe é um método de classe que modifica a variável de classe variavel_estatica.

Resumo

Em resumo, variáveis de classe (estáticas) são compartilhadas por todas as instâncias de uma classe e são definidas dentro da classe, mas fora de quaisquer métodos. Variáveis de instância, por outro lado, são únicas para cada instância. Métodos estáticos são métodos que podem ser chamados na própria classe e não têm acesso à instância ou classe, a menos que fornecidos. Métodos de classe são semelhantes, mas recebem a classe como primeiro argumento, permitindo que modifiquem o estado da classe.

Entender esses conceitos é crucial para programadores Python criarem códigos escaláveis e mantíveis. Lembre-se, variáveis e métodos de classe fornecem uma maneira de definir propriedades e comportamentos que são relevantes para a classe como um todo, em vez de para instâncias individuais.

Inscreva-se gratuitamente e fique atualizado

Receba toda semana um resumo dos principais conteúdos da Asimov direto no seu e-mail. 100% livre de spam.

Áreas de interesse: