Partage
  • Partager sur Facebook
  • Partager sur Twitter

Cours Découvrez le OOP (problème sur un exercice)

    14 septembre 2020 à 17:49:50

    Je suis le cours "Découvrez la programmation OO avec python". Je suis arrivé à la dernière vidéo où il s'agit du jeu de l'héritage , class mère et class enfant.

    Il y a un petit exercice à réaliser sur le module dont l'énoncé est cité ci-dessous:

    "Créez une classe enfant IceWaffle et qui a un attribut de plus : "ice_cream" ! Le premier paramètre représentera le nombre de cuillières de sucre et le second le nombre de boules de glace. Comme ceci : IceWaffle(sugar_spoons, ice_scoops)"

    Le task à faire c'est écrit "l'instance a les bons attributs". J'ai rentré le code ci-dessous et cela n'est pas bon. Je n'arrive pas à comprendre l'erreur. 

    class Waffle:
      def __init__(self, sugar_spoons):
        self.sugar_spoons = sugar_spoons
       
    class IceWaffle(Waffle):
        def __init__(self, ice_cream):
            super().__init__()
            self.ice_cream = ice_cream
    
    ice_waffle = IceWaffle(sugar_spoons, ice_cream)
    print(ice_waffle)
    


    De plus, il y a une proposition de correction qui affiche ce code

    class IceWaffle(Waffle):
      def __init__(self, ice_cream):
        super().__init__()
        self.ice_cream = ice_cream

    Ceci me paraît un peu bizarre car dans l’énoncé il est mentionné "IceWaffle(sugar_spoons, ice-scops) hors dans la proposition de correction, il n'y a pas de "ice-scoops" mais seulement "ice_cream". 

    Je vous remercie de votre aide.

    • Partager sur Facebook
    • Partager sur Twitter
      15 septembre 2020 à 18:58:18

      tu as un message d'erreur de type "TypeError: __init__() takes 2 positional arguments but 3 were given" ? c'est normal, la classe IceWaffle telle que tu l'as écrite n'accepte qu'un seul paramètre (en dehors du self) (cf la définition de son __init__ ); hors quand tu crées une instance, tu lui passes 2 paramètres

      dans son init, il faut donc rajouter le paramètre sugar_spoons et le passer à super().__init__()

      https://www.w3schools.com/python/python_inheritance.asp 

      -
      Edité par umfred 15 septembre 2020 à 18:58:27

      • Partager sur Facebook
      • Partager sur Twitter
        16 septembre 2020 à 10:35:52

        le message d'erreur que la console d'exercice me donne c'est le suivant:

        "Traceback (most recent call last): File Starter.py, line 10, in <module> IceWaffle(sugar_spoons, ice_scoops)

        NameError: name 'sugar_spoon' is not defined

        Je vais regarder pour tester ce que tu me dis ;) 

        • Partager sur Facebook
        • Partager sur Twitter
          16 septembre 2020 à 12:08:59

          c'est aussi normal, si tu n'as pas assigné de valeur à sugar_spoons avant l'appel
          • Partager sur Facebook
          • Partager sur Twitter

          Cours Découvrez le OOP (problème sur un exercice)

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown