Python de Cero a Experto / POO
Atributos y métodos
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.nombre
≠ bus.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.