Correction Commentée — QCM Programmation Orientée Objet (POO) en
Python
Q1. Réponse correcte : B — La POO permet de structurer le code autour des objets, facilitant
sa réutilisation et sa maintenance.
Q2. Réponse correcte : C — La bonne syntaxe pour définir une classe est : class NomClasse:.
Les autres sont incorrectes.
Q3. Réponse correcte : B — Le mot-clé 'def' est utilisé pour définir une méthode dans une
classe comme pour les fonctions.
Q4. Réponse correcte : C — __init__ est la méthode spéciale appelée automatiquement à la
création d’un objet.
Q5. Réponse correcte : C — L’encapsulation permet de cacher les données internes pour
protéger l’état de l’objet.
Q6. Réponse correcte : C — Pour créer un objet, on instancie la classe en l’appelant comme
une fonction : MaClasse().
Q7. Réponse correcte : C — Un seul underscore _ indique une convention de protection,
mais l’attribut reste accessible (protégé).
Q8. Réponse correcte : C — Le polymorphisme permet d’utiliser des méthodes du même
nom avec différents comportements.
Q9. Réponse correcte : A — Un attribut de classe est partagé entre toutes les instances de
cette classe.
Q10. Réponse correcte : B — __str__ permet d’obtenir une représentation lisible de l’objet
destinée à l’utilisateur.
Q11. Réponse correcte : B — L’héritage permet aux classes enfants de réutiliser les
méthodes/attributs de la classe parente.
Q12. Réponse correcte : B — Le polymorphisme permet à différentes classes d’utiliser la
même interface avec des comportements différents.
Q13. Réponse correcte : C — Une classe abstraite ne peut pas être instanciée directement.
Elle sert de modèle pour d’autres classes.
Q14. Réponse correcte : A — On définit une interface en héritant d’une classe avec des
méthodes non implémentées (classe abstraite).
Q15. Réponse correcte : D — Le polymorphisme permet d’utiliser des méthodes avec le
même nom mais des comportements différents.
Q16. Réponse correcte : B — super() permet d’accéder à la classe parente et d’appeler son
constructeur ou ses méthodes.
Q17. Réponse correcte : C — Python permet l’héritage multiple (une classe peut hériter de
plusieurs classes parentes).
Q18. Réponse correcte : A — L’abstraction consiste à cacher les détails internes pour ne
montrer que l’essentiel à l’utilisateur.
Q19. Réponse correcte : C — __str__ est destiné à l’utilisateur, __repr__ au développeur
(débogage, représentation technique).
Q20. Réponse correcte : B — Un attribut avec deux underscores __ est privé (name
mangling).
Q21. Réponse correcte : C — self représente l’instance courante et permet d’accéder aux
attributs et méthodes de l’objet.
Q22. Réponse correcte : C — Le module 're' est utilisé pour manipuler les expressions
régulières.
Q23. Réponse correcte : A — [Link]() permet de rechercher un motif dans une chaîne.
Q24. Réponse correcte : C — try...except permet de gérer les erreurs d’exécution
(exceptions).
Q25. Réponse correcte : A — Une exception personnalisée s’écrit en héritant de Exception :
class MonErreur(Exception):
Q26. Réponse correcte : B — Le bloc finally est toujours exécuté, que l’exception soit levée
ou non.
Q27. Réponse correcte : C — raise permet de lever une exception manuellement.
Q28. Réponse correcte : B — SyntaxError est une erreur de syntaxe qui empêche l’exécution
du programme.
Q29. Réponse correcte : C — On peut gérer plusieurs exceptions en les regroupant dans un
tuple dans except.
Q30. Réponse correcte : A — Une recherche avec [Link]() retourne un objet MatchObject.
Q31. Réponse correcte : C — import os est la syntaxe correcte pour importer un module en
Python.
Q32. Réponse correcte : B — Le module os permet de manipuler les fichiers et dossiers
(répertoires).
Q33. Réponse correcte : B — pip install numpy installe la bibliothèque numpy depuis PyPI.
Q34. Réponse correcte : D — open(file).read() ouvre un fichier et lit son contenu.
Q35. Réponse correcte : B — numpy est optimisé pour les calculs numériques et
scientifiques.
Q36. Réponse correcte : C — Le module time permet de manipuler le temps (pause, temps
écoulé, etc.).
Q37. Réponse correcte : B — [Link]() est utilisé pour écrire dans un fichier ouvert en
mode écriture.
Q38. Réponse correcte : B — [Link]() liste les fichiers d’un dossier.
Q39. Réponse correcte : D — Tout fichier Python (.py) est un module sans avoir besoin d’un
mot-clé spécifique.
Q40. Réponse correcte : B — json est le module standard pour manipuler des fichiers JSON.
Q41. Réponse correcte : A — Une classe est un plan, un objet est une instance (réalisation)
de cette classe.
Q42. Réponse correcte : B — Instancier signifie créer un objet à partir d’une classe.
Q43. Réponse correcte : A — Un double underscore au début __ indique un attribut privé
(name mangling).
Q44. Réponse correcte : B — @classmethod permet de créer une méthode liée à la classe
plutôt qu’à l’instance.
Q45. Réponse correcte : B — __del__ est appelée avant la suppression de l’objet pour
nettoyage.
Q46. Réponse correcte : B — @staticmethod définit une méthode indépendante de la classe
et de l’instance (pas de self).
Q47. Réponse correcte : A — L’héritage multiple est utilisé lorsqu’une classe hérite de
plusieurs autres.
Q48. Réponse correcte : B — MRO est l’ordre dans lequel Python résout les méthodes dans
l’héritage multiple.
Q49. Réponse correcte : B — Une méthode redéfinie dans une classe enfant écrase celle de
la classe parente.
Q50. Réponse correcte : A — Le polymorphisme ad hoc correspond à la surcharge de
méthodes (même nom, signature différente).
Q51. Réponse correcte : A — isinstance(obj, Classe) retourne True si obj est une instance de
Classe ou d’une sous-classe.
Q52. Réponse correcte : C — getattr(obj, "attribut") renvoie la valeur de l’attribut si présent.
Q53. Réponse correcte : D — __call__ permet de rendre un objet appelable comme une
fonction.
Q54. Réponse correcte : B — __attribut est privé grâce au name mangling de Python.
Q55. Réponse correcte : C — L’encapsulation limite l’accès direct aux données internes.
Q56. Réponse correcte : B — from math import sqrt importe uniquement la fonction sqrt du
module math.
Q57. Réponse correcte : A — dir() retourne les attributs et méthodes disponibles d’un objet
ou d’un module.
Q58. Réponse correcte : A — [Link]() ferme proprement un fichier ouvert.
Q59. Réponse correcte : B — datetime est le module le plus complet pour gérer les dates et
heures.
Q60. Réponse correcte : B — python -m venv nom_env crée un environnement virtuel local.
Q61. Réponse correcte : B — @property transforme une méthode en attribut accessible
sans ().
Q62. Réponse correcte : A — @abstractmethod oblige les sous-classes à implémenter la
méthode.
Q63. Réponse correcte : A — En héritant de [Link], on empêche l’instanciation directe de
la classe.
Q64. Réponse correcte : B — abc est le module standard pour les classes abstraites.
Q65. Réponse correcte : __del__ — __del__ est la méthode spéciale appelée avant la
destruction d’un objet.
Q66. Réponse correcte : D — Une classe enfant s’écrit : class Fille(Mere):
Q67. Réponse correcte : A — if __name__ == "__main__": permet d’exécuter du code
uniquement si le fichier est lancé directement.
Q68. Réponse correcte : C — [Link](obj) crée une copie superficielle d’un objet.
Q69. Réponse correcte : B — __methode() définit une méthode privée grâce au name
mangling.
Q70. Réponse correcte : A — hasattr(obj, "attr") retourne True si l’attribut existe dans
l’objet.
Q71. Réponse correcte : A — SOLID regroupe 5 principes pour améliorer la qualité et la
maintenabilité du code orienté objet.
Q72. Réponse correcte : B — Un faible couplage signifie que les classes sont peu
dépendantes les unes des autres.
Q73. Réponse correcte : B — Le pattern Singleton garantit qu’une classe n’ait qu’une seule
instance.
Q74. Réponse correcte : B — La composition consiste à intégrer une instance d’une classe
dans une autre comme attribut.
Q75. Réponse correcte : B — unittest est utilisé pour créer des tests unitaires automatisés.
Q76. Réponse correcte : A — issubclass(SubClasse, SuperClasse) retourne True si la
première hérite de la seconde.
Q77. Réponse correcte : B — Une variable de classe est définie directement dans le corps de
la classe, hors méthode.
Q78. Réponse correcte : B — @classmethod permet de définir une méthode liée à la classe.
Q79. Réponse correcte : A — super() permet à une classe enfant d’appeler les méthodes de
sa classe parente.
Q80. Réponse correcte : B — pass est utilisé pour créer un bloc vide sans erreur (ex:
fonctions à compléter plus tard).