TP2 - Chasse aux bugs en POO
Apprendre à reconnaître et corriger les erreurs courantes en programmation orientée objet.
- Faire le petit quiz :
Vérifie tes connaissances
Les méthodes spéciales (dunders) doivent toujours commencer et finir par deux underscores.
- Créez un dossier
POO(Programmation Orientée Objet) dans votre dossierTerminale NSI. - Dans ce dossier, créez un fichier
TP2_bugs.py.
Introduction
En POO, il est très fréquent de rencontrer des erreurs au moment de définir ou d’utiliser des classes.
L’objectif de ce TP est de se familiariser avec ces erreurs pour mieux les comprendre et apprendre à les corriger.
Exercice 1
On reprend la classe Pokemon :
class Pokemon :
def __init__(self, nom, pv):
nom = nom
pv = pv
- 1Créez un objet
pikachu = Pokemon("Pikachu", 50). - 2Essayez d’afficher
pikachu.nom. Que se passe-t-il ? - 3Expliquez pourquoi l’attribut n’existe pas.
- 4Corrigez le code pour que chaque objet ait bien ses attributs.
Exercice 2
On reprend la classe Voiture :
class Voiture :
def __init__(self, couleur):
self.couleur = couleur
def afficher():
print(self.couleur)
- 1Créez une voiture
v1 = Voiture("Rouge")et appelezv1.afficher(). Quelle erreur apparaît ? - 2D’où vient cette erreur ?
- 3Corrigez la méthode pour qu’elle fonctionne.
Exercice 3
On reprend la classe Instrument :
class Instrument :
def __init__(self, nom):
self.nom = nom
def nom(self):
return self.nom
- 1Créez un instrument
clarinette = Instrument("Clarinette"). - 2Essayez d’appeler
clarinette.nom(). Que se passe-t-il ? - 3Expliquez pourquoi le programme ne fonctionne pas.
- 4Corrigez la classe pour séparer l’attribut et la méthode.
Exercice 4
class Boucle :
def __init__(self):
self.b = Boucle()
b1 = Boucle()
- 1Exécutez le code. Quelle erreur est affichée par Python ?
- 2Expliquez en quelques mots pourquoi cette erreur apparaît.
- 3Corrigez la classe pour éviter la récursion infinie.
Exercice 5
On reprend la classe Carre :
class Carre :
def __init__(self, cote):
self.cote = cote
c1 = Carre(4)
print(c1.longueur)
- 1Que se passe-t-il quand on exécute ce programme ?
- 2Comment Python appelle-t-il ce type d’erreur ?
- 3Corrigez le code pour que l’affichage fonctionne correctement.
Exercice 6 – Bonus : utiliser les erreurs pour progresser
En Python, une exception est une erreur que le programme renvoie quand il ne peut pas exécuter une instruction. Exemple : AttributeError, TypeError, RecursionError…
On peut intercepter ces erreurs grâce au mot-clé try/except.
try:
print(c1.longueur)
except AttributeError:
print("L'attribut n'existe pas !")
- 1Expliquez le rôle du bloc
try/except. - 2Pourquoi cela peut-il être utile dans des programmes plus complexes ?
- 3Rajoutez un
try/exceptdans la classeVoiturepour éviter une erreur si on essaie d’accéder à un attribut inexistant.
Faire des erreurs en POO est normal : l’important est de comprendre le message d’erreur et d’apprendre à le corriger.