Exercices Architecture & Patterns Classe Protocol (duck typing formel)
🎉

Bravo!

Avancé 🧠 Fondamentaux 30 XP 0 personnes ont réussi

Classe Protocol (duck typing formel)

Le duck typing, c'est le principe de Python : si ca marche comme un canard et que ca fait coin-coin, c'est un canard. Autrement dit, on ne vérifie pas le type d'un objet, on vérifie s'il a les bonnes méthodes.

Depuis Python 3.8, le module typing propose Protocol pour formaliser ca. Un Protocol definit une interface : quelles méthodes un objet doit avoir. Mais contrairement a l'héritage classique, les classes n'ont pas besoin d'heriter du Protocol. Il suffit qu'elles aient les bonnes méthodes.

Exemple :
from typing import Protocol

class Parleur(Protocol):
def parler(self) -> str: ...

class Chien: # pas d'héritage de Parleur !
def parler(self) -> str:
return 'Woof'

# Chien est considere compatible avec Parleur

Definis un Protocol nomme Dessinable qui exige une méthode dessiner(self) -> str.

Crée deux classes Cercle(rayon) et Carre(cote) qui implementent dessiner sans heriter du protocole. Cercle.dessiner() retourne 'Cercle r=5' (avec le rayon), Carre.dessiner() retourne 'Carre c=3' (avec le cote).

Écris une fonction afficher_tout(formes) qui appelle dessiner() sur chaque forme et retourne la liste des résultats.

Exemple :
formes = [Cercle(5), Carre(3)]
afficher_tout(formes) # ['Cercle r=5', 'Carre c=3']

Tests (2/4)

Cercle
assert Cercle(5).dessiner() == 'Cercle r=5'
Carre
assert Carre(3).dessiner() == 'Carre c=3'

+ 0 tests cachés

Indices (3 disponibles)

solution.py