Variáveis de classe Python: como criar e usar variáveis de classe
As variáveis de classe em Python representam uma forma estruturada de partilhar dados entre diferentes instâncias de uma classe. Além disso, as alterações numa variável de classe afetam todas as instâncias da classe, pelo que não é necessário redefini-las sempre que são instanciadas.
O que são variáveis de classe em Python?
As variáveis de classe em Python são criadas dentro de uma classe. Ao contrário das variáveis de instância, que são específicas para cada instância de uma classe, as variáveis de classe mantêm o mesmo valor para todas as instâncias. Como regra geral, essas variáveis são definidas antes do construtor e todas as instâncias da classe podem aceder a elas.
As variáveis de classe são frequentemente utilizadas para armazenar informações comuns a todas as instâncias de uma classe, como valores de configuração, valores padrão ou estados comuns dentro de uma hierarquia de classes. Também pode utilizar essas variáveis para definir métodos ou atributos de classe partilhados por todas as instâncias de uma classe, o que melhora a funcionalidade e a organização do código.
Qual é a sintaxe das variáveis de classe em Python?
As variáveis de classe em Python são criadas dentro da definição da classe, mas fora de qualquer método dentro dessa classe.
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}")
# Creating instances of Car
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: A4pythonDentro da classe Car (carro), define-se a variável de classe total_cars para obter o número total de carros. Sempre que uma nova instância da classe é criada, o construtor __init__ é chamado. Em cada instância, as variáveis de instância brand (marca) e model (modelo) são definidas, e a variável de classe total_cars (total de carros) é incrementada em 1 para refletir a adição de um novo carro ao total.
Além disso, no exemplo, o método display_details() é chamado para mostrar os detalhes de cada instância de carro. Para aceder à variável de classe total_cars e obter o número total de carros criados, deve-se usar uma f-string, que é um método de formatação de string, também chamado de Python string format.
Exemplos de utilização das variáveis de classe em Python
Para lidar com variáveis de classe em Python de forma segura, é importante entender como aceder a elas, modificá-las e como elas interagem com a herança.
Aceder a variáveis de classe
Pode aceder às variáveis de classe em Python utilizando o nome da classe ou uma instância, seguido de um ponto e do nome da variável.
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 variablepythonAo programar em Python, pode aceder às variáveis de classe em diferentes locais:
- Dentro do construtor da classe, escrevendo a palavra-chave
selfou o nome da classe. - Dentro dos métodos de instância da mesma forma que no caso anterior, ou seja, utilizando
selfou o nome da classe. - Fora da classe, utilizando a referência ao objeto ou o nome da classe.
Modificar variáveis de classe
É possível modificar as variáveis de classe em Python utilizando diretamente o nome da classe. No entanto, se uma variável de instância tiver o mesmo nome que uma variável de classe e tentar modificá-la através da instância, será criada uma nova variável de instância e 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 variablepythonNeste exemplo, sobrescrevemos a variável de classe class_var atribuindo-lhe um novo valor através da classe MyClass, e a instância obj é automaticamente atualizada para refletir essa alteração.
Variáveis de classe e herança
Graças à herança, as classes derivadas podem aceder às variáveis de classe da classe base e utilizá-las sem ter de as redefinir.
class BaseClass:
base_var = "Base variable"
class DerivedClass(BaseClass):
pass
print(DerivedClass.base_var) # Output: Base variablepythonNo exemplo anterior, é definida uma classe base BaseClass que contém a variável de classe base_var. A classe derivada DerivedClass herda da BaseClass. Graças à herança, DerivedClass pode aceder à variável de classe base_var da classe base e utilizá-la sem ter de a redefinir.