Carregando...

Compor objetos

A cor blue é da caneta, não da bolsa. A bolsa só carrega essa caneta, e por isso Bag não vira classe filha de Pen. Você monta a caneta com Pen("blue") e só então a coloca na bolsa com Bag(pen). Nesse caminho não entra pacote nem pasta.

uma caneta dentro da bolsa

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)

Para ler a cor você atravessa a bolsa até a caneta: bag.pen.color. A bolsa não tem cor própria, então entrega o que a caneta guarda. bag.pen não é uma segunda caneta. É a que você montou, e por isso pen.color e bag.pen.color são o mesmo blue. O print escreve só essa palavra. Nada de badge na frente, nada de 4, e não há segunda linha.

A linha class Bag não enche a bolsa. Ela só descreve o molde. Quem guarda a caneta é Bag(pen). Nesse instante o init da bolsa roda, e self é a própria bolsa.

📊 Cada nome e o que ele guarda

O que você escreve O que é
pen a caneta que você montou, que guarda blue
bag.pen essa mesma caneta, dentro da bolsa
bag.pen.color a palavra blue

bag.color não está no programa. Se você lesse esse nome, a execução pararia com AttributeError, porque a bolsa não guarda cor nenhuma. None não é escrito e o programa não segue. Bag("blue") também não está no programa: uma palavra solta não é caneta e não tem cor, então ler .color nela para do mesmo jeito, com AttributeError. Não escreva class Bag(Pen). Essa forma cria uma classe filha. Aqui a caneta fica dentro da bolsa.

A caneta dentro da bolsa

Você montou a caneta, colocou-a na bolsa e leu blue passando pela bolsa, em bag.pen.color. A próxima página é uma classe de dados, aquela que serve sobretudo para guardar valores. Nesta, você só põe a caneta na bolsa e lê blue por ela.

🧠 Teste Seu Conhecimento

Pronto para Começar

Teste Seu Conhecimento

Desafie-se com este questionário interativo e veja o quão bem você entende o tópico

❓
6
Perguntas
🎯
70%
Para Passar
♾️
∞
Tempo
🔄
∞
Tentativas

📝 Instruções

  • Leia cada pergunta cuidadosamente
  • Selecione a melhor resposta para cada pergunta
  • Você pode refazer o quiz quantas vezes quiser
  • Seu progresso será mostrado no topo