Partage
  • Partager sur Facebook
  • Partager sur Twitter

Incompréhension concernant les objets

je veux infliger des dégats à champion1

    24 novembre 2019 à 20:55:54

    Je voudrais infliger 10 points de dégats à champion.2
    class champion:
        def __init__(self, pseudo, health, attack):
            self.pseudo = pseudo
            self.health = health
            self.attack = attack
            print(pseudo, " a rejoint la faile de l'invocateur, il dispose de ", health, "points de vie pour ", attack,
            "points d'attaque")
    
    champion1 = champion("Kog'Maw", 30, 60)
    champion2 = champion("Darius",100,20)
    
    def get_pseudo(self):
        return self.pseudo
    
    def get_health(self):
        return self.health
    
    def get_attack(self):
        return self.attack
    
    def damage(self, damage):
        self.health =- damage
        print("Vous venez de subir ", damage, " points de dégats ! ")
    
    champion2.damage(10)
    print("Il vous reste ", champion2.get_health(), "points de vie")




    Quand je run le programme, le champion 2 ne subit pas les 10 points de dégâts 

    pycharm me propose la correction suivante : 

     champion2.damage(10)
    AttributeError: 'champion' object has no attribute 'damage'
    • Partager sur Facebook
    • Partager sur Twitter
      24 novembre 2019 à 23:31:14

      Bonsoir,

      Oui damage est une fonction et non une méthode de la classe champion.

      Si vous ne comprenez pas les termes, oubliez ce que vous faîtes et commencez par les bases, beaucoup de débutants veulent aller trop vite dans l'apprentissage et je préfère prévenir avant que vous me demandiez de faire le travail à votre place. ;)

      • Partager sur Facebook
      • Partager sur Twitter

      Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
      La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

        24 novembre 2019 à 23:37:26

        NassimBetrouni1 a écrit:

        pycharm me propose la correction suivante : 

         champion2.damage(10)
        AttributeError: 'champion' object has no attribute 'damage'


        Très probablement que vous avez oublié d'indenter. Une fonction (pas une méthode) dont le premier paramètre est self est très rare et ne se rencontre pas dans du code de débutant. Donc je suppose que vous avez voulu écrire :

        class champion:
            def __init__(self, pseudo, health, attack):
                self.pseudo = pseudo
                self.health = health
                self.attack = attack
                print(pseudo, " a rejoint la faile de l'invocateur, il dispose de ", health, "points de vie pour ", attack,
                "points d'attaque")
         
        
            
            def get_pseudo(self):
                return self.pseudo
            
            def get_health(self):
                return self.health
            
            def get_attack(self):
                return self.attack
            
            def damage(self, damage):
                self.health =- damage
                print("Vous venez de subir ", damage, " points de dégats ! ")
            
        champion1 = champion("Kog'Maw", 30, 60)
        champion2 = champion("Darius",100,20)    
         
        champion2.damage(10)
        print("Il vous reste ", champion2.get_health(), "points de vie")
        Kog'Maw  a rejoint la faile de l'invocateur, il dispose de  30 points de vie pour  60 points d'attaque
        Darius  a rejoint la faile de l'invocateur, il dispose de  100 points de vie pour  20 points d'attaque
        Vous venez de subir  10  points de dégats ! 
        Il vous reste  -10 points de vie
        



        -
        Edité par PascalOrtiz 24 novembre 2019 à 23:38:21

        • Partager sur Facebook
        • Partager sur Twitter
          24 novembre 2019 à 23:54:24

          Très probablement que vous avez oublié d'indenter.

          Une erreur de copier coller, oui :D

          • Partager sur Facebook
          • Partager sur Twitter

          Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
          La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

            24 novembre 2019 à 23:58:05

            Alors mille merci pour vos réponses en effet je suivais le cours du youtuber Graven et il est vrai que je j'ai mal saisi les notions de méthodes et de paramètres self, je vous remercie beaucoup ! Pourriez vous cependant peut- être m'expliquer mon erreur ? j'ai mal compris votre phrase quand vous disiez : Très probablement que vous avez oublié d'indenter

            -
            Edité par Betrouni 25 novembre 2019 à 0:04:25

            • Partager sur Facebook
            • Partager sur Twitter
              25 novembre 2019 à 2:28:42

              L'indentation c'est le décalage des lignes de code par rapport à la gauche.
              • Partager sur Facebook
              • Partager sur Twitter

              Blond, bouclé, toujours le sourire aux lèvres...

              Incompréhension concernant les objets

              × 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