Menu
Coddy logo textTech

Variables de instancia vs de clase

Parte de la sección Object Oriented Programming 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í hay 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 el cambio afecta 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 la creación del objeto:

alice.age = 16  # Esto crea una variable de instancia
print(alice.age)  # 16
# print(bob.age)  # Esto causarí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 las variables de clase

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

Pruébalo tú mismo

# TODO: Importar la clase BankAccount desde bank_account.py
from bank_account import BankAccount

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

# TODO: Llamar a display_info() para ambas cuentas

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

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

# TODO: Llamar a display_info() para ambas cuentas nuevamente para mostrar que ambas 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 Object Oriented Programming