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.
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
pythonNo 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
pythonEm 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
pythonNo 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
pythonNeste 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.