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 :

TypeError: this constructor takes no arguments


Sujet :

Python

  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 3
    Par défaut TypeError: this constructor takes no arguments
    bonjour à tous je viens de commencer aavec python et dans le tuto "Apprendre à programmer avec Python" au capitre 12 je reprends le code ci-dessous et j'ai le message
    "TypeError: this constructor takes no arguments" que faut il faire?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    >>> class Time():
    ...      "Encore une nouvelle clase temporelle"
    ...      def _init_(self, hh =0, mm= 0, ss =0):
    ...           self.heure = hh
    ...           self.minute = mm
    ...           self.second = ss
    ... 
    >>> recreation = Time(10, 15, 16)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: this constructor takes no arguments

  2. #2
    Membre Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Par défaut
    Bonjour,

    la méthode __init__ prend 2 underscores de chaque côté.

  3. #3
    Futur Membre du Club
    Inscrit en
    Août 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 3
    Par défaut
    merci beaucoup mais in=l ya toujour erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    >>> class Time:
    ...  def __init__(self):
    ...       self.heure = 0
    ...       self.minute = 0
    ...       self.seconde = 0
    ... 
    >>> def affiche_heure(self):
    ...      print str(self.heure) + ":" + str(self.minute) + ":" + str(self.seconde)
    ... 
    >>> tstart = Time()
    >>> tstart.affiche_heure()
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    AttributeError: Time instance has no attribute 'affiche_heure'

  4. #4
    Membre Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Par défaut
    l'indentation permet de structurer le code en python.
    Pour ajouter une méthode à une classe, il convient d' utiliser la même indentation que pour la methode __init__, ce qui donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    >>> class Time:
    ...     def __init__(self):
    ...         self.heure = 0
    ...         self.minute = 0
    ...         self.seconde = 0
    ... 
    ...     def affiche_heure(self):
    ...         print str(self.heure) + ":" + str(self.minute) + ":" + str(self.seconde)
    ...

  5. #5
    Futur Membre du Club
    Inscrit en
    Août 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 3
    Par défaut
    juste ajouter cette commentaire
    # -*- coding:Utf-8 -*-

  6. #6
    Membre éclairé
    Avatar de MaliciaR
    Inscrit en
    Juillet 2008
    Messages
    513
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juillet 2008
    Messages : 513
    Par défaut
    Citation Envoyé par mfaty Voir le message
    juste ajouter cette commentaire
    # -*- coding:Utf-8 -*-
    Ca s'appelle un encodage
    Fais attention à ça (et à l'indentation surtout) si tu copies-colles des codes d'un éditeur à un autre ou d'un site dans un éditeur.
    Le tact dans l'audace c'est de savoir jusqu'où on peut aller trop loin. Cocteau
    L'abjection la plus totale, ce n'est pas de trahir, c'est de ne jamais donner un commencement de réalité à ses rêves les plus fous. M. Moreau


    Les indispensables : Les règles, , FAQ et tutos avant de poster, et !
    Traduction de Linux Device Drivers 3 : venez participer
    membre de l'April - Promouvoir et défendre les logiciels libres

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 22/05/2011, 08h24
  2. Réponses: 11
    Dernier message: 17/08/2010, 00h21
  3. Réponses: 2
    Dernier message: 04/09/2009, 16h40
  4. Réponses: 2
    Dernier message: 21/05/2009, 10h03
  5. Réponses: 6
    Dernier message: 03/04/2009, 23h30

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