Méthodes spéciales
Quand vous écrivez print(guest), le premier programme écrit badge mira à l'écran. Une méthode spéciale permet au Badge lui-même de répondre à print ou à len. Le nom mira est stocké dans un Badge ; aucun paquet n'est installé et aucun dossier n'est créé. La ligne print(guest) est celle qui exécute str : vous n'écrivez donc pas guest.str() vous-même dans le programme. Avec Badge("mira"), init s'exécute, et self est ce badge. str renvoie les mots "badge " plus le nom, avec une seule espace entre badge et mira. C'est print qui les écrit à l'écran.
class Badge:
def __init__(self, name):
self.name = name
def __str__(self):
return "badge " + self.name
guest = Badge("mira")
print(guest)
L'écran affiche une seule ligne : badge mira. Le nom stocké est seulement mira ; le mot badge placé devant est ajouté par str. La ligne est écrite par print. Sans print dans le programme, l'écran resterait vide, car renvoyer les mots n'est pas la même chose que les écrire. guest.str() n'est pas dans le programme : print(guest) suffit pour exécuter cette méthode spéciale. Un Badge sans str n'écrirait pas badge mira, mais une ligne qui nomme le modèle et un emplacement en mémoire. None n'est pas écrit.
class Badge:
def __init__(self, name):
self.name = name
def __len__(self):
return len(self.name)
guest = Badge("mira")
print(len(guest))
Le second programme est indépendant du premier. Son écran montre l'entier 4, pas badge mira ni mira. mira compte quatre lettres : m, i, r, a. C'est pourquoi len renvoie 4 et que print l'écrit. Il n'y a pas de point décimal, et le nom stocké ne contient aucune espace. Ce programme ne définit pas str, donc il n'écrit pas badge mira. Si len manquait, len(guest) s'arrêterait avec une erreur nommée TypeError. None n'est pas écrit, et le programme ne continue pas. Cette ligne qui échoue n'est pas dans le programme.
📊 Ce que vous écrivez et ce que l'écran affiche
| Ce que vous écrivez | Ce que l'écran affiche |
|---|---|
| print(guest) | badge mira |
| print(len(guest)) | 4 |
| len(guest) sans __len__ | le programme s'arrête |
La page suivante place un objet à l'intérieur d'un autre objet. Cette page-ci montre seulement deux méthodes spéciales sur un unique badge nommé mira.
Deux réponses, un seul badge
print(guest) écrit badge mira parce que str s'exécute. print(len(guest)) écrit 4 parce que len s'exécute. Le 4 est le nombre de lettres de mira. Vous ne mettez pas de parenthèses après ces noms spéciaux. La page suivante place un objet à l'intérieur d'un autre objet.
🧠 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