Lección 12 de 16 · Atributos dentro del objeto
Clases y objetos: qué es self
Ver que los atributos viven dentro del objeto en el montón y que self es una referencia más a ese objeto.
Metodología · Con otros
Enseñar: pato de goma y diálogo socrático
Explica al pato de goma cada vez que aparece un marco nuevo: quién es self en ese marco.
Metodología · Criterio
Interrogación elaborativa (los cinco porqués)
¿Por qué existe self? Encadena porqués hasta llegar a: varios objetos comparten los mismos métodos.
t<0 Antes de ejecutar
Lee el código y comprométete con una predicción
Mientras tanto, Python ya hizo su parte de t<0: leyó y compiló el archivo completo. Ninguna variable existe todavía.
programa.py
1class Cuenta: 2 def __init__(self, saldo): 3 self.saldo = saldo 4 5 def depositar(self, monto): 6 self.saldo = self.saldo + monto 7 8cuenta = Cuenta(100) 9cuenta.depositar(50) 10print(cuenta.saldo)
t=0 t>0 Ejecución paso a paso
Qué se ejecuta primero y dónde vive cada variable
Avanza con Siguiente paso o las flechas del teclado. Pasa el mouse por una variable para ver a qué objeto apunta.
t=-1
Antes de ejecutar
Python lee y compila el archivo
1class Cuenta:2 def __init__(self, saldo):3 self.saldo = saldo4 5 def depositar(self, monto):6 self.saldo = self.saldo + monto7 8cuenta = Cuenta(100)9cuenta.depositar(50)10print(cuenta.saldo)
Salida
(vacía)
Qué pasó
- Antes de ejecutar nada, Python lee el archivo completo y lo compila a bytecode: instrucciones que su máquina virtual entiende.
- Si hubiera un error de sintaxis, el programa fallaría aquí, sin ejecutar ni una sola línea.
- Nombres que aparecen en el código: Cuenta, cuenta, depositar, monto, print, saldo, self. Ninguno existe todavía en memoria.
Pila de marcos · dónde viven los nombres
Todavía no hay marcos: ninguna variable existe.
Montón · dónde viven los objetos
Ningún objeto todavía.
Idea clave
Cuenta(100) crea un objeto vacío y llama a __init__ con self apuntando a él. self.saldo = saldo guarda un atributo dentro del objeto. En depositar, self es el mismo objeto que cuenta: por eso el cambio se ve afuera.
t>0 Después: repaso sin mirar
Recupera de memoria
Responde sin volver al paso a paso. Para dominar la lección necesitas 2 de 2.
Explícalo con tus palabras (Feynman)
Dominio de la lección
Aún no
- Falta la predicción (t<0)
- Repaso: 0 de 2 (se necesitan 2)