Chargement...

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.

Un stylo dans un sac

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)

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

Prêt à Commencer

Testez Vos Connaissances

Mettez-vous au défi avec ce quiz interactif et voyez à quel point vous comprenez le sujet

❓
6
Questions
🎯
70%
Pour Réussir
♾️
∞
Temps
🔄
∞
Tentatives

📝 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