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.
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
Teste Seu Conhecimento
Desafie-se com este questionário interativo e veja o quão bem você entende o tópico
📝 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