Menu
CoddyTech

Variables de instancia vs. variables de clase

Parte de la sección Programación orientada a objetos del Journey de Python de Coddy. Lección 13 de 64.

Las variables de instancia son únicas para cada objeto, mientras que las variables de clase son compartidas por todos los objetos de la misma clase.

Aquí tienes un ejemplo de una clase con ambos tipos de variables

class Student:
    # Variable de clase - compartida por todas las instancias
    school = "Python High School"
    
    def __init__(self, name, grade):
        # Variables de instancia - únicas para cada estudiante
        self.name = name
        self.grade = grade

Crea objetos de estudiante:

alice = Student("Alice", "A")
bob = Student("Bob", "B")

Accede a las variables de instancia (únicas para cada objeto):

print(alice.name)  # Alice
print(bob.name)    # Bob
print(alice.grade) # A
print(bob.grade)   # B

Accede a las variables de clase (compartidas por todos los objetos):

print(alice.school)     # Python High School
print(bob.school)       # Python High School
print(Student.school)   # Python High School

Ahora cambia la variable de clase:

Student.school = "Python Academy"

Comprueba cómo afecta el cambio a todas las instancias:

print(alice.school)   # Python Academy
print(bob.school)     # Python Academy

Salida:

Alice
Bob
A
B
Python High School
Python High School
Python High School
Python Academy
Python Academy

También puedes crear variables de instancia después de crear el objeto:

alice.age = 16  # Esto crea una variable de instancia
print(alice.age)  # 16
# print(bob.age)  # Esto provocaría un error: bob no tiene age

Diferencia clave: las variables de instancia (creadas con self.variable_name) son únicas para cada objeto, mientras que las variables de clase (definidas directamente en la clase) son compartidas por todos los objetos. Cambiar una variable de clase afecta a todas las instancias.

challenge icon

Desafío

Fácil

Completa un sistema bancario. Definirás una clase BankAccount en un archivo y la usarás en otro.

Trabajarás con:

  • bank_account.py: Define la clase BankAccount con atributos y métodos
  • driver.py: Importa la clase, crea cuentas y demuestra el uso de variables de clase

Sigue los comentarios TODO en ambos archivos para obtener instrucciones paso a paso. Los comentarios te guiarán para crear la clase con las variables y los métodos adecuados, y para mostrar cómo las variables de clase afectan a todas las instancias.

Pruébalo tú mismo

# TODO: Importa la clase BankAccount de bank_account.py
from bank_account import BankAccount

# TODO: Crea dos cuentas con estos datos exactos:
# - account1: titular "Alice Smith" con un saldo de $1000
# - account2: titular "Bob Jones" con un saldo de $2000

# TODO: Llama a display_info() para ambas cuentas

# TODO: Cambia la variable de clase interest_rate a 0.03 (3%)
# Usa este formato: BankAccount.interest_rate = 0.03

# TODO: Imprime el texto "After interest rate change:"

# TODO: Llama de nuevo a display_info() para ambas cuentas para mostrar que las dos tienen la nueva tasa de interés
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Programación orientada a objetos

Practica por tu cuenta: Compilador de Python online