← 所有公开测验
开始测验(游客或账户)
Python — Programmation orientée objet (POO)
作者 Jude · 23/05/2026 · 112 次浏览 · 次分享
Classes, héritage, méthodes spéciales, propriétés, polymorphisme, MRO et dataclasses. 20 questions.
20
题目
🇫🇷 Français
语言
中等
难度
测验题目
-
1. Quel est le rôle de
selfdans une méthode d'instance ?- Une variable globale
- Une référence à l'instance courante, passée automatiquement
- Le nom de la classe
- Une fonction privée
-
2. Quelle méthode est appelée à l'instanciation ?
__init____new____call____create__
-
3. Que produit ce code ?
class A: x = 0 a1 = A() a2 = A() A.x = 5 print(a1.x, a2.x)- 0 0
- 5 5
- 0 5
- AttributeError
-
4. Que fait
@staticmethod?- Crée une méthode sans
selfnicls - Rend la méthode privée
- Rend la méthode abstraite
- Crée un attribut de classe
- Crée une méthode sans
-
5. Quel résultat affiche ce code ?
class Animal: def cri(self): return "..." class Chien(Animal): def cri(self): return "Wouaf" print(Chien().cri())- ...
- Wouaf
- Animal
- TypeError
-
6. À quoi sert
super().__init__(...)?- Créer une nouvelle classe
- Appeler l'initialiseur de la classe parente
- Détruire l'instance parente
- Rendre la classe abstraite
-
7. Quelle méthode définit la représentation lisible (utilisée par
str(obj)) ?__repr____str____format____unicode__
-
8. Que produit ce code ?
class Compte: def __init__(self, solde): self._solde = solde @property def solde(self): return self._solde c = Compte(100) print(c.solde)- 100
- <property>
- Erreur car parenthèses manquantes
- AttributeError
-
9. Comment déclarer une méthode de classe ?
@classmethodavecclsen premier paramètre@staticavecselfdef classmethod()@instanceaveccls
-
10. L'ordre de résolution des méthodes (MRO) en héritage multiple est défini par…
- Alphabétique
- Linéarisation C3
- Parcours en profondeur naïf
- Interdit en Python
-
11. Quel est le MRO de
Dici ?class A: pass class B(A): pass class C(A): pass class D(B, C): pass print([c.__name__ for c in D.__mro__])- ['D', 'B', 'A', 'C', 'object']
- ['D', 'B', 'C', 'A', 'object']
- ['D', 'C', 'B', 'A', 'object']
- ['D', 'A', 'B', 'C', 'object']
-
12. Que fait
__slots__?- Active la sérialisation automatique
- Empêche la création d'un
__dict__par instance et fixe l'ensemble d'attributs - Rend toutes les méthodes privées
- Active la persistance
-
13. Que renvoie ce code ?
from dataclasses import dataclass @dataclass(frozen=True) class P: x: int y: int p = P(1, 2) try: p.x = 9 except Exception as e: print(type(e).__name__)- AttributeError
- FrozenInstanceError
- TypeError
- Aucune (modification réussie)
-
14. Quel décorateur déclare un attribut calculé en lecture/écriture ?
@cached_propertyseul@property+@<nom>.setter@classmethod+@staticmethod@dataclass
-
15. Quelle méthode rend une instance utilisable comme fonction (
obj()) ?__call____invoke____run____exec__
-
16. Que produit ce code ?
class A: def __init__(self): print("A") class B(A): def __init__(self): super().__init__() print("B") B()- B
- A
- A puis B
- B puis A
-
17. À quoi sert
abc.ABC/@abstractmethod?- Empêcher l'héritage
- Forcer les sous-classes à implémenter certaines méthodes ; instancier la classe abstraite lève
TypeError - Rendre la classe finale
- Activer le pickling
-
18. Que renvoie ce code ?
class V: def __init__(self, x, y): self.x, self.y = x, y def __eq__(self, o): return (self.x, self.y) == (o.x, o.y) a = V(1,2); b = V(1,2) print(a == b, hash(a) == hash(b))- True True
- True False
- Erreur :
__hash__mis àNoneautomatiquement quand on définit__eq__ - False True
-
19. Quelle différence entre
@cached_propertyet@property?- Identiques
cached_propertycalcule une seule fois par instance et stocke le résultat dans__dict__cached_propertyest globale à la classecached_propertyne peut pas avoir de setter, et c'est tout
-
20. Que produit ce code ?
class Meta(type): def __new__(mcs, name, bases, ns): ns['hello'] = lambda self: "hi" return super().__new__(mcs, name, bases, ns) class C(metaclass=Meta): pass print(C().hello())- hi
- AttributeError
- TypeError
- None