Le but de cet exercice est de transformer la méthode chante_pour afin de la rendre statique.
La méthode doit permettre de chanter Joyeux Anniversaire pour une personne définie par l'argument envoyé au paramètre prenom.
Dans ce cas-ci, le script doit donc afficher Joyeux Anniversaire pour Paul (la méthode chante_pour ne doit pas afficher le texte de la chanson mais juste le retourner).
Vous devez donc rendre la méthode statique et la modifier pour qu'elle affiche le texte contenu dans l'attribut paroles de la classe Chanson, adapté pour le prénom Paul.
code Code
class Chanson:
paroles = '''Joyeux anniversaire,
Joyeux anniversaire,
Joyeux anniversaire {prenom},
Joyeux anniversaire.'''
@staticmethod
def chante_pour(prenom):
return Chanson.paroles.format(prenom=prenom)
print(Chanson.chante_pour(prenom="Paul"))
comment Explications
Pour rendre une méthode statique et ainsi pouvoir l'utiliser directement depuis la classe, sans avoir besoin de créer d'instance, il faut utiliser le décorateur @staticmethod :
@staticmethod
def chante_pour():
Cela nous permet d'appeler directement la méthode chante_pour depuis la classe Chanson :
Chanson.chante_pour()
Il suffisait ensuite de permettre l'envoi d'un argument prenom et d'afficher les paroles de la chanson contenues dans l'attribut paroles de la classe Chanson :
@staticmethod
def chante_pour(prenom):
return Chanson.paroles.format(prenom=prenom)
Dans ce cas-ci, vu qu'on a une méthode statique, pas besoin de mettre le paramètre self, vu qu'on n'a pas besoin d'instance. C'est l'avantage des méthodes statiques, de pouvoir travailler directement à partir de la classe. Il suffisait donc d'ajouter un paramètre prenom.
On retournait ensuite la chanson adaptée pour le prénom passé en argument grâce à la méthode format :
Chanson.paroles.format(prenom=prenom)
star Points importants
-
Pour définir une méthode statique, on utilise le décorateur
@staticmethod. -
Pour insérer la valeur d'une variable à l'intérieur d'une chaîne de caractères on peut utiliser la méthode
format.
class Chanson:
paroles = """Joyeux anniversaire,
Joyeux anniversaire,
Joyeux anniversaire {prenom},
Joyeux anniversaire."""
def chante_pour():
pass
print(Chanson.chante_pour(prenom="Paul"))class Chanson:
paroles = """Joyeux anniversaire,
Joyeux anniversaire,
Joyeux anniversaire {prenom},
Joyeux anniversaire."""
@staticmethod
def chante_pour(prenom):
return Chanson.paroles.format(prenom=prenom)
print(Chanson.chante_pour(prenom="Paul"))Console
Un instant...
Résultats
La méthode chante_pour est statique
import types a = Chanson() assert isinstance(a.chante_pour, types.FunctionType) is True, "La méthode chante_pour n'est pas statique."
Test de la méthode statique chante_pour
paroles = """Joyeux anniversaire,
Joyeux anniversaire,
Joyeux anniversaire Paul,
Joyeux anniversaire."""
paroles_classe = Chanson.chante_pour("Paul")
assert paroles == paroles_classe, "La méthode chante_pour ne retourne pas la bonne valeur."Bravo, tu as réussi cet exercice de code 🥳
Envoyer ma solution
Vous avez trouvé une solution alternative pour cet exercice ? Proposez votre solution à la communauté 👇
Ma solution :



