Dans cet exercice, vous devez initialiser l'instance harry_potter et créer un attribut d'instance pour que l'instance ait un prix différent de celui par défaut.

L'instance harry_potter devra donc avoir un prix de 19,99€.

L'attribut de classe prix de la classe Livre lui ne doit pas changer et doit rester à 9,99€.

Attention

Vous devez créer une méthode pour initialiser l'instance. Vous ne pouvez pas simplement modifier l'attribut prix de l'instance pour lui donner la valeur de 19.99. Si vous faites ceci, l'exercice ne sera pas validé.

Afficher l'aide

Pour initialiser une instance, on utilise la méthode __init__.
Pour créer un attribut d'instance, il ne faut pas oublier d'utiliser self.

code Code

class Livre:
    prix = 9.99

    def __init__(self, prix):
        self.prix = prix

harry_potter = Livre(19.99)

comment Explications

Pour initialiser une instance, on utilise la méthode __init__ qui est appelée automatiquement lorsque l'on crée une instance.

À l'intérieur de cette méthode, il ne faut pas oublier de mettre en premier paramètre self, qui correspond à notre instance, et va nous permettre à l'intérieur de cette méthode de créer un attribut propre à notre instance.

Cet attribut prix est le deuxième paramètre que nous donnons à la méthode __init__.

Ainsi, nous pouvons définir un prix personnalisé pour notre instance au moment de sa création :

harry_potter = Livre(19.99)

Et le récupérer pour l'assigner à notre instance (self) dans la méthode __init__ :

def __init__(self, prix):
    self.prix = prix

Ainsi, on définit un attribut prix uniquement sur notre instance (self) et l'attribut de classe prix reste inchangé à 9.99€.

star Points importants

  • Pour initialiser une instance, on utilise la méthode __init__.

  • Pour référer à notre instance à l'intérieur d'une méthode, on utilise le paramètre self.

  • Pour créer un attribut d'instance, on utilise la syntaxe self.attribut = valeur.

class Livre:
    prix = 9.99

harry_potter = Livre()
class Livre:
    prix = 9.99

    def __init__(self, prix):
        self.prix = prix

harry_potter = Livre(19.99)

Console

Un instant...
terminal

Résultats

/ 2 tests validés

Test de l'attribut d'instance prix

try:
    assert harry_potter.prix == 19.99, ""
except NameError:
    raise NameError("L'instance harry_potter n'a pas d'attribut prix.")
except AssertionError:
    raise AssertionError("L'attribut d'instance prix de la variable harry_potter ne contient pas la bonne valeur.")

assert '__init__' in dir(Livre), "La classe Livre doit contenir une méthode permettant d'initialiser une instance."

        

Test de l'attribut de classe prix

try:
    assert Livre.prix == 9.99, ""
except NameError:
    raise NameError("La classe Livre n'a pas d'attribut prix.")
except AssertionError:
    raise AssertionError("L'attribut de classe prix de la classe Livre ne contient 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é 👇

Seules les propositions différentes de la solution proposée par Docstring peuvent être envoyées.

Ma solution :

Rechercher sur le site

Formulaire de contact

Inscris-toi à Docstring

Pour commencer ton apprentissage.

Tu as déjà un compte ? Connecte-toi.