Dans cet exercice, vous allez devoir implémenter ce qu'on appelle un contextmanager
.
On doit en effet pouvoir utiliser notre classe Rectangle
avec l'instruction with
afin de permettre le calcul de l'aire d'un rectangle :
with Rectangle(6, 12) as r:
r.calcul_aire()
Le code suivant devra retourner les deux phrases suivantes :
L'aire d'un rectangle de 6m par 12m est de :
72m2
Vous devez donc implémenter le contextmanager ainsi que la méthode calcul_aire
qui permette de calculer l'aire du rectangle (petit rappel : pour calculer l'aire d'un rectangle, il suffit de multiplier sa largeur par sa longueur).
class Rectangle: def __init__(self, longueur, largeur): self.longueur = longueur self.largeur = largeur def __enter__(self): class RectangleWithArea(Rectangle): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) def calcul_aire(self) -> None: print( f"L'aire d'un rectangle de {self.longueur}m par {self.largeur}m est de :\n" f"{self.longueur * self.largeur}m2" ) return RectangleWithArea(self.longueur, self.largeur) def __exit__(self, type, value, traceback): ... with Rectangle(6, 12) as r: r.calcul_aire()
Lionel

class Rectangle: def __init__(self, longueur, largeur): self.longueur = longueur self.largeur = largeur self.aire = self.longueur * self.largeur def __enter__(self): return self def __exit__(self, exc_type, exc_val, exc_tb): pass def calcul_aire(self): print(f"L'aire d'un rectangle de {self.longueur}m par {self.largeur}m est de :") print(f"{self.aire}m2") with Rectangle(6, 12) as r: r.calcul_aire()
Romu80

class Rectangle: def __init__(self, longueur, largeur): self.longueur = longueur self.largeur = largeur with Rectangle(6, 12) as r: r.calcul_aire()
Un instant...
Test du contextmanager de la classe Rectangle
Vous devez implémenter deux méthodes qui permettent d'utiliser la syntaxe with Rectangle(6, 12) as r
.
Bravo, tu as réussi cet exercice de code 🥳

Soumettre ma solution
Vous avez trouvé une solution alternative pour cet exercice ? Proposez votre solution à la communauté 👇
Seules les propositions différentes de la solution proposée par Docstring peuvent être envoyées.
Ma solution :
Mes notes
Sauvegardé