Python class variables: Tudo sobre variáveis de classe

Em Python, class variables (variáveis de classe) permitem que desenvolvedores estruturem, com mais eficácia, dados compartilhados entre diferentes instâncias de uma classe. Quando variáveis de classe são definidas dentro de uma classe, mas fora de qualquer método, essas são refletidas a todas as outras instâncias da mesma classe. Isso garante a consistência dos dados, além de simplificar processos de gestão, manutenção e atualização.

O que são class variables em Python?

É possível se criar variáveis dentro de uma classe na linguagem de programação Python. Ao contrário de variáveis de instância, específicas para cada instância de uma classe, variáveis de classe refletem o mesmo valor a todas as instâncias. Elas costumam ser definidas dentro do construtor, estando, portanto, acessíveis a todas as instâncias de uma mesma classe.

Variáveis de classe têm o papel de armazenar informações relevantes para a classe como um todo, ou seja, para todas as instâncias de uma classe. Qualquer tipo de valor pode ser guardado por classes, como números inteiros, de ponto flutuante, objetos e outros elementos dentro da hierarquia de classes. Ainda, você pode usar variáveis de classe para definir métodos ou atributos de classe que são compartilhados por todas as instâncias, ação que melhora a funcionalidade e a organização de um código.

Hospedagem web com consultor pessoal

Rápido e escalável, confie na hospedagem da IONOS, que inclui domínio grátis no primeiro ano e endereço de e-mail!

  • Domínio
  • SSL Wildcard
  • Suporte 24 horas

Sintaxe de class variables em Python

É simples criar uma variável de classe em Python. O importante é lembrar que ela deve ser sempre criada dentro da definição da classe, mas fora de qualquer método.

class Car:
    total_cars = 0  # Class variable to track the total number of cars
    def __init__(self, brand, model):
        self.brand = brand  # Instance variable for the car brand
        self.model = model  # Instance variable for the car model
        Car.total_cars += 1  # Increment the total number of cars upon each instantiation
    def display_details(self):
        print(f"Brand: {self.brand}, Model: {self.model}")
car1 = Car("BMW", "X3")
car2 = Car("Audi", "A4")
# Accessing class variable and instance variables
print(f"Total number of cars: {Car.total_cars}")  # Output: 2
car1.display_details()  # Output: Brand: BMW, Model: X3
car2.display_details()  # Output: Brand: Audi, Model: A4
python

No exemplo acima, definimos a variável de classe total_cars dentro da classe Car, para verificarmos o número total de carros. Quando uma nova instância da classe é criada, o construtor __init__ é chamado. Em cada instanciação, as variáveis de instância brand e model são definidas e a variável de classe total_cars é incrementada em 1.

Quando chamamos o método display_details(), solicitamos a exibição de detalhes sobre as respectivas instâncias de carro. Por meio de uma f-string, método de formatação de strings em Python, conseguimos acessar a variável de classe total_cars, para a exibição do número total de carros.

Exemplos de aplicação de class variables em Python

Acessos, modificações e heranças desempenham importantes papeis no gerenciamento de variáveis de classe. Preste especial atenção a essas possibilidades para trabalhar com mais eficiência.

Acessar variáveis de classe

Class variables, em Python, podem ser acessadas pelo nome da classe seguida do nome da variável. Separe os termos por um ponto final, como mostra o exemplo de código:

class MyClass:
    class_var = "This is a class variable"
# using class name to access class variable
print(MyClass.class_var)  # Output: This is a class variable
# using instance to access class variable
obj = MyClass()
print(obj.class_var)  # Output: This is a class variable
python

Em Python, você pode acessar variáveis de classe em diferentes lugares:

  • No construtor (dentro da própria classe): Uma variável de classe pode ser acessada dentro do construtor, usando-se tanto a palavra-chave self combinada ao nome da variável, quanto o nome da classe combinado ao nome da variável.
  • Em métodos de instância: Também é possível acessar variáveis de classe dentro de métodos de instância. Para isso, use a palavra-chave self ou o nome da classe.
  • Fora da classe: Fora da classe, você pode acessar uma variável de classe fazendo uso da referência do objeto ou do nome da classe.

Modificar variáveis de classe

Class variables podem ser modificadas de forma direta, usando-se, para tanto, o nome da classe. No entanto, redobre a sua atenção ao fazer isso: se uma variável de instância tiver o mesmo nome que uma variável de classe, ao tentar modificar a variável por meio da instância, você acabará fazendo com que uma nova variável de instância seja criada. Para piorar, a variável de classe permanecerá inalterada.

class MyClass:
    class_var = "Original class variable"
obj = MyClass()
print(obj.class_var)  # Output: Original class variable
MyClass.class_var = "Modified class variable"
print(obj.class_var)  # Output: Modified class variable
python

No código acima, estamos substituindo a variável de classe class_var, atribuindo-lhe um novo valor por meio da classe MyClass. A mudança é automaticamente refletida na instância obj.

Herdar variáveis de classe

Heranças permitem que subclasses, ou seja, classes derivadas de superclasses, possam acessar e utilizar as variáveis de classe da superclasse, sem que seja preciso redefini-las uma a uma.

class BaseClass:
    base_var = "Base variable"
class DerivedClass(BaseClass):
    pass
print(DerivedClass.base_var)  # Output: Base variable
python

Neste código de exemplo, definimos a superclasse BaseClass, que contém a variável de classe base_var. Já a subclasse DerivedClass é herdeira da superclasse BaseClass. Por meio da herança, DerivedClass pode acessar e utilizar a variável de classe base_var (da superclasse), sem que redefinições sejam necessárias.

Este artigo foi útil?
Para melhorar a sua experiência, este site usa cookies. Ao acessar o nosso site, você concorda com nosso uso de cookies. Mais informações
Page top