Componer objetos
El color blue no pertenece a la mochila, sino al bolígrafo. La mochila solo lo lleva dentro, y por eso Bag no es una clase hija de Pen. Tampoco se instala ningún paquete ni se crea ninguna carpeta: todo sucede entre dos clases pequeñas y los objetos que tú sacas de ellas.
class Pen:
def __init__(self, color):
self.color = color
class Bag:
def __init__(self, pen):
self.pen = pen
pen = Pen("blue")
bag = Bag(pen)
print(bag.pen.color)
Primero construyes el bolígrafo con Pen("blue") y después lo metes en la mochila con Bag(pen). La línea class Bag no llena nada: solo describe cómo es una mochila. La mochila se llena justo cuando escribes Bag(pen); en ese momento se ejecuta el init de Bag y self es esa mochila.
En print(bag.pen.color), la mochila no tiene ningún color propio que ofrecer, así que la lectura pasa por el bolígrafo que lleva dentro. Por eso print escribe una sola palabra: blue. bag.pen no es un segundo bolígrafo, sino el que tú construiste, y de ahí que pen.color y bag.pen.color den lo mismo. En la pantalla no aparece badge delante, el número 4 no se escribe y no hay una segunda línea.
📊 Qué es cada expresión
| Expresión | Qué es |
|---|---|
| pen | el bolígrafo que construiste, que conserva blue |
| bag.pen | ese mismo bolígrafo, dentro de la mochila |
| bag.pen.color | la palabra blue |
Hay dos líneas que no están en el programa y que lo detendrían. Con bag.color, la lectura se para con un error llamado AttributeError, porque en la mochila no hay guardado ningún color; None no se escribe y el programa no sigue. Con Bag("blue") pasa algo parecido: una palabra suelta no es un bolígrafo ni tiene color, así que leer .color en ella también termina en AttributeError.
El bolígrafo dentro de la mochila
El bolígrafo conserva blue, la mochila solo lo transporta y bag.pen.color llega a esa palabra pasando por él. No escribas class Bag(Pen): esa forma crea una clase hija, y aquí el bolígrafo está dentro de la mochila. En la página siguiente verás una clase de datos, es decir, una clase que sobre todo guarda valores. Esta página se limita a meter el bolígrafo en la mochila y a leer blue a través de ella.
🧠 Pon a Prueba tu Conocimiento
Pon a Prueba tu Conocimiento
Ponte a prueba con este cuestionario interactivo y descubre qué tan bien entiendes el tema
📝 Instrucciones
- Lee cada pregunta cuidadosamente
- Selecciona la mejor respuesta para cada pregunta
- Puedes repetir el quiz tantas veces como quieras
- Tu progreso se mostrará en la parte superior