Composer des objets
Dans ce programme, la couleur blue appartient au stylo, jamais au sac. Le sac se contente de transporter ce stylo ; il n'est donc pas une classe enfant de Pen. Aucun paquet n'est installé et aucun dossier n'est créé : tout se passe entre deux petites classes et les objets que vous en tirez.
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)
Vous construisez d'abord le stylo avec Pen("blue"), puis vous le glissez dans le sac avec Bag(pen). La ligne class Bag ne remplit rien : elle décrit seulement ce qu'est un sac. Le sac n'est rempli qu'au moment où vous écrivez Bag(pen) ; à cet instant, le init de Bag s'exécute et self désigne ce sac.
Pour print(bag.pen.color), le sac n'a aucune couleur à donner de lui-même : la lecture passe par le stylo qu'il transporte. Voilà pourquoi print écrit un seul mot, blue. bag.pen n'est pas un second stylo, c'est celui que vous avez construit ; pen.color et bag.pen.color donnent donc le même résultat. Rien d'autre n'apparaît : pas de badge devant, pas de nombre 4, pas de deuxième ligne.
📊 Ce que désigne chaque expression
| Expression | Ce qu'elle désigne |
|---|---|
| pen | le stylo que vous avez construit, qui garde blue |
| bag.pen | ce même stylo, placé dans le sac |
| bag.pen.color | le mot blue |
Deux lignes absentes du programme l'arrêteraient net. Avec bag.color, la lecture échoue sur une erreur nommée AttributeError, car aucune couleur n'est stockée dans le sac ; None n'est pas écrit et le programme ne continue pas. Avec Bag("blue"), un simple mot n'est pas un stylo et n'a pas de color : lire .color dessus s'arrête donc aussi sur AttributeError.
Un stylo dans un sac
Le stylo garde blue, le sac ne fait que le transporter, et bag.pen.color atteint ce mot en passant par lui. N'écrivez pas class Bag(Pen) : cette forme crée une classe enfant, alors qu'ici le stylo se trouve à l'intérieur du sac. La page suivante présente la classe de données, une classe qui sert surtout à conserver des valeurs. Celle-ci se borne à placer le stylo dans le sac et à lire blue à travers lui.
🧠 Testez Vos Connaissances
Testez Vos Connaissances
Mettez-vous au défi avec ce quiz interactif et voyez à quel point vous comprenez le sujet
📝 Instructions
- Lisez chaque question attentivement
- Sélectionnez la meilleure réponse pour chaque question
- Vous pouvez refaire le quiz autant de fois que vous le souhaitez
- Votre progression sera affichée en haut