CodeForge

Python de Cero a Experto / POO

Atributos y métodos

Teoría20 min20 XP

Un objeto guarda DATOS (atributos) y sabe hacer cosas (métodos). Pero hay una distinción importante: algunos datos son propios de CADA objeto (el nombre de un gasto), y otros son COMPARTIDOS por todos los objetos de la clase (la tasa de IVA, igual para todos). Entender atributos de instancia vs de clase, y cómo los métodos usan ambos, te da control fino sobre tus modelos. Hoy afinas el diseño de tus objetos.

Lo propio y lo compartido

Atributos de instancia vs de clase

Los atributos de INSTANCIA se crean en __init__ con self. y son propios de cada objeto (cafe.nombrebus.nombre). Los atributos de CLASE se declaran directamente en el cuerpo de la clase (fuera de __init__) y son COMPARTIDOS: tasa_iva es la misma para todos los gastos, y existe una sola vez. Un método puede usar ambos: self.valor (dato de este objeto) y Gasto.tasa_iva (dato compartido). Usa atributos de clase para constantes o valores comunes a todas las instancias.

Métodos que cambian el objeto

¿Cuál es la diferencia entre un atributo de instancia y uno de clase?

Mini-reto

Modela una Cuenta de Mi Bolsillo: 1) atributo de clase banco = "Mi Bolsillo" (compartido); atributos de instancia titular y saldo en __init__; 2) métodos consignar(monto) y gastar(monto) que modifiquen el saldo (con validación: no gastar más de lo que hay); 3) un método estado() que devuelva un f-string con el titular y el saldo; 4) crea una cuenta, haz varias operaciones y muestra el estado. Comprueba que el saldo se mantiene correcto entre llamadas.

Qué sigue

Ya diseñas objetos con estado y comportamiento. La próxima lección trae uno de los pilares de la POO: la HERENCIA —crear clases que EXTIENDEN a otras, reutilizando y especializando su comportamiento—. Por ejemplo, un GastoRecurrente que es un Gasto pero con algo más. Reutilización al máximo nivel.