Cargando...

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.

Un bolígrafo dentro de una mochila

python
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

Listo para Empezar

Pon a Prueba tu Conocimiento

Ponte a prueba con este cuestionario interactivo y descubre qué tan bien entiendes el tema

❓
6
Preguntas
🎯
70%
Para Aprobar
♾️
∞
Tiempo
🔄
∞
Intentos

📝 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