Las variables de clase en Python re­pre­se­n­tan una forma es­tru­c­tu­ra­da de compartir datos entre distintas in­s­ta­n­cias de una clase. Además, los cambios en una variable de clase afectan a todas las in­s­ta­n­cias de la clase, por lo que no es necesario re­de­fi­ni­r­las cada vez que se in­s­ta­n­cian.

¿Qué son las variables de clase en Python?

Las variables de clase en Python se crean dentro de una clase. A di­fe­re­n­cia de las variables de instancia, que son es­pe­cí­fi­cas para cada instancia de una clase, las variables de clase conservan el mismo valor para todas las in­s­ta­n­cias. Por regla general, estas variables se definen antes del co­n­s­tru­c­tor y todas las in­s­ta­n­cias de la clase pueden acceder a ellas.

Las variables de clase suelen uti­li­zar­se para almacenar in­fo­r­ma­ción que es común a todas las in­s­ta­n­cias de una clase, como los valores de co­n­fi­gu­ra­ción, los valores por defecto o estados comunes dentro de una jerarquía de clases. También puedes utilizar estas variables para definir métodos o atributos de clase co­m­pa­r­ti­dos por todas las in­s­ta­n­cias de una clase, lo que mejora la fu­n­cio­na­li­dad y la or­ga­ni­za­ción del código.

Hosting
Hosting de primera al mejor precio
  • 3x más rápido, ahora un 60 % de ahorro
  • Alta di­s­po­ni­bi­li­dad >99.99 %
  • Solo en IONOS: hasta 500 GB incluidos

¿Cuál es la sintaxis de las variables de clase en Python?

Las variables de clase en Python se crean dentro de la de­fi­ni­ción de la clase, pero fuera de cualquier método dentro de esa clase.

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: A4
python

Dentro de la clase Car (coche) se define la variable de clase total_cars para obtener el número total de coches. Cada vez que se crea una nueva instancia de la clase, se llama al co­n­s­tru­c­tor __init__. En cada instancia se es­ta­ble­cen las variables de instancia brand (marca) y model (modelo), y la variable de clase total_cars (total de coches) se in­cre­me­n­ta en 1 para reflejar la adición de un nuevo coche al total.

Además, en el ejemplo se llama al método display_details() para mostrar los detalles de cada instancia de coche. Para acceder a la variable de clase total_cars y obtener el número total de coches creados, se debe utilizar un f-string, que es un método de formato de cadena, también de­no­mi­na­do Python string format.

Ejemplos de uso de las variables de clase en Python

Para manejar las variables de clase en Python de manera segura, es im­po­r­ta­n­te entender cómo acceder a ellas, mo­di­fi­car­las y cómo in­ter­ac­túan con la herencia.

Acceder a variables de clase

Puedes acceder a las variables de clase en Python uti­li­za­n­do el nombre de la clase o una instancia, seguido de un punto y el nombre de la variable.

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

Al programar en Python, puedes acceder a las variables de clase en di­fe­re­n­tes lugares:

  • Dentro del co­n­s­tru­c­tor de la clase es­cri­bie­n­do la palabra clave self o el nombre de la clase.
  • Dentro de los métodos de instancia de la misma manera que en el caso anterior, es decir, uti­li­za­n­do self o el nombre de la clase.
  • Fuera de la clase usando la re­fe­re­n­cia al objeto o el nombre de la clase.

Modificar variables de clase

Es posible modificar las variables de clase en Python uti­li­za­n­do di­re­c­ta­me­n­te el nombre de la clase. No obstante, si una variable de instancia tiene el mismo nombre que una variable de clase e intentas mo­di­fi­car­la a través de la instancia, se crea una nueva variable de instancia y la variable de clase queda sin modificar.

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

En este ejemplo, so­bre­s­cri­bi­mos la variable de clase class_var asi­g­ná­n­do­la un nuevo valor a través de la clase MyClass, y la instancia obj se actualiza au­to­má­ti­ca­me­n­te para reflejar ese cambio.

Variables de clase y herencia

Gracias a la herencia, las clases derivadas pueden acceder a las variables de clase de la clase base y uti­li­zar­las sin tener que re­de­fi­ni­r­las.

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

En el anterior ejemplo se define una clase base BaseClass que contiene la variable de clase base_var. La clase derivada DerivedClass hereda de la BaseClass. Gracias a la herencia, DerivedClass puede acceder a la variable de clase base_var de la clase base y uti­li­zar­la sin tener que volver a definirla.

Ir al menú principal