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 :

Créez la méthode __init__()


Sujet :

Python

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 11
    Points : 8
    Points
    8
    Par défaut Créez la méthode __init__()
    Bonjour à tous.

    JE dois créer la méthode __init__() et ajouter l'attribut sugar à votre instance pour que le nombre de cuillères à sucre sur notre gaufre soit égal à 2.
    La correction me donne ce code qui ne fonctionne pas non plus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    __init__(self):
      self.sugar = 2
    Mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    class Agent():
        def _init__(self):
            self.sugar = 2
        sugar = Agent(0)
    Il y a surement une petite erreur de débutant. J'ai pas du tout comprendre, mais j'ai pas de message d'erreur.
    J'ai essayé ça aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    class Agent:
        def __init__(self, sugar):
            self.sugar = 2
    first_agent = Agent(2)
    Merci de votre aide

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    class Agent:
        def __init__(self, sugar):
            self.sugar = 2
    first_agent = Agent(2)
    Ce code est correct mais si tu fournis l'argument (le nombre) alors c'est pour l'utiliser.

    N'hésite pas à abuser de print() pour voir ce que fait ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    class Agent:
        def __init__(self, sugar):
            self.sugar = sugar
            print("sugar: %s" % self.sugar)
    first_agent = Agent(2)

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Bonjour et merci de ton aide. J'ai exécuter le code avec le print. Il me renvoi bien sugar = 2. Je comprends encore moins.

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Explique ce qui te perturbes.

    Qu'attendais-tu comme résultat ?

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Ce qui me perturbe est le fait que mon code est bon mais visiblement il réponds pas à la consigne qui est la suivante :

    Créez la méthode __init__() et ajoutez l'attribut sugar à votre instance pour que le nombre de cuillères à sucre sur notre gaufre soit égal à 2.

  6. #6
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Si le nombre de cuillères doit être fixé par défaut, tu peux aussi faire def __init__(self, sugar=2): mais l'énoncé n'est pas précis sur ce point.

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Lorsque je fais ce que vous dites le correcteur me donne ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Il y a une erreur dans votre code. Exemple de correction :
     
    __init__(self):
      self.sugar = 2
    Ca me parle pas plus

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 788
    Points : 446
    Points
    446
    Par défaut
    Bonjour, Si je comprend bien, ils ne s'attendent pas à ce que la valeur soit passée en paramètre
    Ils veulent une constante

    donc
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    class Agent:
        def __init__(self):
            self.sugar = 2
    Le savoir est une arme alors soyons armés

  9. #9
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Ben oui mais ça c'était déjà le code de départ de SeallerGhosT, alors qu'est-ce qui ne convient pas ?

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 788
    Points : 446
    Points
    446
    Par défaut
    Pas tout à fait

    Son code :

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    class Agent():
        def _init__(self):
            self.sugar = 2
    sugar = Agent(0)

    Agent n'a pas d'argument donc l'appel provoque une erreur


    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    class Agent:
        def __init__(self, sugar):
            self.sugar = 2
    first_agent = Agent(2)

    Syntaxiquement juste mais peut être que la correction ne veut pas d'argument.
    Le savoir est une arme alors soyons armés

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Merci à tous de votre intérêt . Vu que le code est bon ( j'ai essayé celui de Nom et même résultat) j'ai décidé de zappé l'exercice et de continuer le chapitre.

    Encore merci

  12. #12
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    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 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par SeallerGhosT Voir le message
    Je dois créer la méthode __init__() et ajouter l'attribut sugar à votre instance pour que le nombre de cuillères à sucre sur notre gaufre soit égal à 2.
    La correction me donne ce code qui ne fonctionne pas non plus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    __init__(self):
      self.sugar = 2
    Ben déjà le correcteur aurait écrit "def" ce n'en serait que mieux. Ca va peut-être sans dire mais ça va encore mieux en le disant...

    Citation Envoyé par SeallerGhosT Voir le message
    Mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    class Agent():
        def _init__(self):
            self.sugar = 2
        sugar = Agent(0)
    Manque un "_". C'est def __init__() et non def _init__().

    Citation Envoyé par SeallerGhosT Voir le message
    mais j'ai pas de message d'erreur.
    Pas normal. Tu demandes à créer un objet avec un argument, alors que la méthode __init__() qui est utilisée par défaut (vu que tu n'en as pas écrit une spécifique) est sans argument. Ca aurait dû te répondre "TypeError: this constructor takes no arguments"...

    Citation Envoyé par SeallerGhosT Voir le message
    J'ai essayé ça aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    class Agent:
        def __init__(self, sugar):
            self.sugar = 2
    first_agent = Agent(2)
    Là ça fonctionne mais le paramètre "sugar" (à ne pas confondre avec l'attribut "sugar" de la classe) n'étant pas réutilisé dans la méthode, il ne sert à rien. Tu aurais écrit first_agent = Agent(500) ce serait pareil.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    class Agent:
        def __init__(self):
            self.sugar = 2
     
    first_agent = Agent()
    print first_agent.sugar
    Ou bien (comme l'a dit VinsS) le paramètre est facultatif...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    class Agent:
        def __init__(self, sugar=2):
            self.sugar = sugar
     
    first_agent = Agent()
    print first_agent.sugar            # Affichera 2
    second_agent = Agent(150)
    print second_agent.sugar      # Affichera 150
    ...
    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]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Méthodes]UML vs MERISE Lequel pour quoi ?
    Par Daniel258 dans le forum Méthodes
    Réponses: 5
    Dernier message: 31/03/2003, 11h49
  2. Gros Problème avec DirectShow et la méthode RELEASE
    Par Olivier Delmotte dans le forum DirectX
    Réponses: 3
    Dernier message: 10/03/2003, 18h10
  3. [Singleton] Différences avec méthodes statiques
    Par Franche dans le forum Design Patterns
    Réponses: 1
    Dernier message: 26/02/2003, 17h10
  4. Probleme d'impression avec la méthode TForm->Print()
    Par Kid Icarus dans le forum C++Builder
    Réponses: 13
    Dernier message: 31/07/2002, 14h26
  5. Cryptage en C selon la méthode de césat
    Par shenron dans le forum C
    Réponses: 2
    Dernier message: 31/05/2002, 08h22

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