QuizLander
← 所有公开测验

Python — Programmation orientée objet (POO)

作者 Jude · 23/05/2026 · 112 次浏览 · 0 次分享

Classes, héritage, méthodes spéciales, propriétés, polymorphisme, MRO et dataclasses. 20 questions.
20
题目
🇫🇷 Français
语言
中等
难度
开始测验(游客或账户)
分享为图片

测验题目

  1. 1. Quel est le rôle de self dans une méthode d'instance ?
    1. Une variable globale
    2. Une référence à l'instance courante, passée automatiquement
    3. Le nom de la classe
    4. Une fonction privée
  2. 2. Quelle méthode est appelée à l'instanciation ?
    1. __init__
    2. __new__
    3. __call__
    4. __create__
  3. 3. Que produit ce code ?
    class A:
        x = 0
    
    a1 = A()
    a2 = A()
    A.x = 5
    print(a1.x, a2.x)
    1. 0 0
    2. 5 5
    3. 0 5
    4. AttributeError
  4. 4. Que fait @staticmethod ?
    1. Crée une méthode sans self ni cls
    2. Rend la méthode privée
    3. Rend la méthode abstraite
    4. Crée un attribut de classe
  5. 5. Quel résultat affiche ce code ?
    class Animal:
        def cri(self): return "..."
    
    class Chien(Animal):
        def cri(self): return "Wouaf"
    
    print(Chien().cri())
    1. ...
    2. Wouaf
    3. Animal
    4. TypeError
  6. 6. À quoi sert super().__init__(...) ?
    1. Créer une nouvelle classe
    2. Appeler l'initialiseur de la classe parente
    3. Détruire l'instance parente
    4. Rendre la classe abstraite
  7. 7. Quelle méthode définit la représentation lisible (utilisée par str(obj)) ?
    1. __repr__
    2. __str__
    3. __format__
    4. __unicode__
  8. 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)
    1. 100
    2. <property>
    3. Erreur car parenthèses manquantes
    4. AttributeError
  9. 9. Comment déclarer une méthode de classe ?
    1. @classmethod avec cls en premier paramètre
    2. @static avec self
    3. def classmethod()
    4. @instance avec cls
  10. 10. L'ordre de résolution des méthodes (MRO) en héritage multiple est défini par…
    1. Alphabétique
    2. Linéarisation C3
    3. Parcours en profondeur naïf
    4. Interdit en Python
  11. 11. Quel est le MRO de D ici ?
    class A: pass
    class B(A): pass
    class C(A): pass
    class D(B, C): pass
    print([c.__name__ for c in D.__mro__])
    1. ['D', 'B', 'A', 'C', 'object']
    2. ['D', 'B', 'C', 'A', 'object']
    3. ['D', 'C', 'B', 'A', 'object']
    4. ['D', 'A', 'B', 'C', 'object']
  12. 12. Que fait __slots__ ?
    1. Active la sérialisation automatique
    2. Empêche la création d'un __dict__ par instance et fixe l'ensemble d'attributs
    3. Rend toutes les méthodes privées
    4. Active la persistance
  13. 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__)
    1. AttributeError
    2. FrozenInstanceError
    3. TypeError
    4. Aucune (modification réussie)
  14. 14. Quel décorateur déclare un attribut calculé en lecture/écriture ?
    1. @cached_property seul
    2. @property + @<nom>.setter
    3. @classmethod + @staticmethod
    4. @dataclass
  15. 15. Quelle méthode rend une instance utilisable comme fonction (obj()) ?
    1. __call__
    2. __invoke__
    3. __run__
    4. __exec__
  16. 16. Que produit ce code ?
    class A:
        def __init__(self): print("A")
    class B(A):
        def __init__(self):
            super().__init__()
            print("B")
    B()
    1. B
    2. A
    3. A puis B
    4. B puis A
  17. 17. À quoi sert abc.ABC / @abstractmethod ?
    1. Empêcher l'héritage
    2. Forcer les sous-classes à implémenter certaines méthodes ; instancier la classe abstraite lève TypeError
    3. Rendre la classe finale
    4. Activer le pickling
  18. 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))
    1. True True
    2. True False
    3. Erreur : __hash__ mis à None automatiquement quand on définit __eq__
    4. False True
  19. 19. Quelle différence entre @cached_property et @property ?
    1. Identiques
    2. cached_property calcule une seule fois par instance et stocke le résultat dans __dict__
    3. cached_property est globale à la classe
    4. cached_property ne peut pas avoir de setter, et c'est tout
  20. 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())
    1. hi
    2. AttributeError
    3. TypeError
    4. None
答题并查看我的分数

评论

登录后即可评论。

加载中…