IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

difficulté sur l'héritage


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Mai 2014
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Mai 2014
    Messages : 98
    Par défaut difficulté sur l'héritage
    bonsoir,
    j'ai écrit un code qui comporte une classe mère et une classe héritée
    oui mais voilà j'obtiens tjrs 15 qui est passé comme argument dans l'instance de la classe héritée au moment de l'attaque
    j'ai regardé les tutos , les bouquins je ne vois pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    class Personnage:
        def __init__(self, prenom, vie=20, force=15):
            self.prenom = prenom
            self.vie = vie
            self.force = force
     
        def attaquer(self, vie, force):
            self.vie -= force
     
     
    class Soigneur(Personnage):
        def __init__(self,prenom, vie=15,magie=15,force=15):
            self.prenom = prenom
            self.vie = vie
            self.magie=magie
            super().__init__(prenom, vie,magie)
     
        def soin(self):
            self.vie += 3
     
     
    perso1 = Personnage('fabien')
    infirmier = Soigneur('pre',10,10)
     
    perso1.attaquer(infirmier,15)
    print(infirmier.vie)

    resultat

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    "C:\Users\Administrateur\PycharmProjects\test heritage\venv\Scripts\python.exe" "C:/Users/Administrateur/PycharmProjects/test heritage/titi.py"
    15
     
    Process finished with exit code 0

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 836
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par jm41320 Voir le message
    bonsoir,
    Bonjour

    Citation Envoyé par jm41320 Voir le message
    oui mais voilà j'obtiens tjrs 15 qui est passé comme argument dans l'instance de la classe héritée au moment de l'attaque
    Bizarre car moi j'obtiens 10, ce qui est exactement la valeur donnée à l'infirmier quand il est créé (infirmier = Soigneur('pre',10,10))

    Citation Envoyé par jm41320 Voir le message
    j'ai regardé les tutos , les bouquins je ne vois pas
    Regarde ta méthode "attaque". Elle n'est pas prévue pour attaquer quelqu'un d'autre mais pour être attaqué soi-même. Elle reçoit en premier paramètre le self (donc l'instance de l'objet qui l'appelle), en second paramètre une valeur "vie" qui n'est pas utilisée et en 3° paramètre une valeur "force" qui sert à descendre sa propre vie. Tu ne peux pas t'en servir comme tu le fais, en lui passant en second paramètre l'infirmier.
    C'est l'infirmier qui doit l'appeler si tu veux voir sa vie descendre.

    PS: nouveau sujet=nouveau topic
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Membre très actif
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Mai 2014
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Mai 2014
    Messages : 98
    Par défaut
    je te remercie
    bye

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 752
    Par défaut
    Salut,

    Citation Envoyé par jm41320 Voir le message
    oui mais voilà j'obtiens tjrs 15 qui est passé comme argument dans l'instance de la classe héritée au moment de l'attaque
    j'ai regardé les tutos , les bouquins je ne vois pas
    Si on exécute le code que vous avez posté, il affiche 10 et non 15.
    Et si déjà dans la description d'un problème vous n'avez pas le minimum de rigueur pour vous relire et vérifier que ce qui est raconté est cohérent, vous n'avez pas encore acquis les bases de la programmation (qui est essentiellement cette rigueur).

    Sûr que si vous contentez de regarder les tutos et les bouquins sans prendre le temps d'apprendre, ce sera juste des informations qui passent devant vos yeux sans imprimer côté cerveau. Et si vous ne savez pas apprendre, il va falloir y travailler car c'est une activité que vous allez probablement avoir à pratiquer toute votre vie.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre Expert

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    class Personnage:
        def __init__(self, prenom, vie=20, force=15):
            self.prenom = prenom
            self.vie = vie
            self.force = force
     
        def subir_attaque(self, force_attaque):
            self.vie -= force_attaque
     
     
    class Soigneur(Personnage):
        def __init__(self,prenom, vie=15,magie=15,force=15):
            super().__init__(prenom, vie,force)  ### Vous n'avez manifestement pas compris à quoi sert cette ligne, que je vous ai corriger
            self.magie=magie
     
        def soin(self):
            self.vie += 3
     
     
    perso1 = Personnage('fabien')
    infirmier = Soigneur('pre',10,10)
     
    infirmier.subir_attaque(infirmier.force) ### Observez ici
    print(infirmier.vie)

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 836
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par lg_53 Voir le message
    infirmier.subir_attaque(infirmier.force) ### Observez ici
    infirmier.subir_attaque(perso1.force)
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  7. #7
    Membre Expert

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    infirmier.subir_attaque(perso1.force)
    En effet XD. J'avoue j'ai écris le code à la volée sans le tester !

Discussions similaires

  1. Probleme sur un Héritage
    Par rvzip64 dans le forum Delphi
    Réponses: 4
    Dernier message: 15/01/2007, 14h01
  2. Difficultés sur Access
    Par yerimacm dans le forum Access
    Réponses: 1
    Dernier message: 06/01/2007, 03h18
  3. des difficultés sur des methodes
    Par bambi98 dans le forum UML
    Réponses: 4
    Dernier message: 12/12/2006, 09h32
  4. Question sur l'héritage
    Par the big ben 5 dans le forum Delphi
    Réponses: 28
    Dernier message: 06/06/2006, 17h27
  5. Réponses: 6
    Dernier message: 15/02/2006, 18h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo