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: unbound method __init__()


Sujet :

Python

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Novembre 2011
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2011
    Messages : 95
    Points : 34
    Points
    34
    Par défaut TypeError: unbound method __init__()
    Bonsoir,
    je suis en train d'apprendre à utiliser tensorflow. Je veux ecrire dans un fichier avec tensorflow
    donc je fait
    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
    import tensorflow as tf
     
    #Simple hello world using TensorFlow                                                                                                                                                                         
     
    # Create a Constant op                                                                                                                                                                                       
    # The op is added as a node to the default graph.                                                                                                                                                            
    #                                                                                                                                                                                                            
    # The value returned by the constructor represents the output                                                                                                                                                
    # of the Constant op.                                                                                                                                                                                        
    hello = tf.constant('Hello, TensorFlow!')
    t = tf.read_file("e.txt", "Name")
    # Start tf session                                                                                                                                                                                           
    sess = tf.Session()
    tf.python_io.TFRecordWriter.__init__("path")
    tf.python_io.TFRecordWriter.write("record")
    print sess.run(hello)
    print sess.run(t)
    le prototype est:
    tf.python_io.TFRecordWriter.__init__(path)
    il m'affiche TypeError: unbound method __init__() must be called with TFRecordWriter instance as first argument (got str instance instead).
    Je ne comprends pas ce qu'il veut.
    Cordialement.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par Rémi1995 Voir le message
    il m'affiche TypeError: unbound method __init__() must be called with TFRecordWriter instance as first argument (got str instance instead).
    Je ne comprends pas ce qu'il veut.
    Avec Python, __init__ permet d'initialiser l'instance d'une classe mais la méthode n'a pas a être appelée directement.
    Si on a:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> class A:
    ...    def __init__(self):
    ...       pass
    ...    def hello(self): print('hello')
    ...
    La création d'une instance se passe ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> a = A()
    >>> a.hello()
    hello
    >>>
    Plus d'infos dans le Python tutorial...

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

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Novembre 2011
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2011
    Messages : 95
    Points : 34
    Points
    34
    Par défaut
    Comme ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TW = tf.python_io.TFRecordWriter.__init__("e.txt");

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par Rémi1995 Voir le message
    Comme ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TW = tf.python_io.TFRecordWriter.__init__("e.txt");
    L'assignation du résultat à une variable est une bonne idée. Pour le côté droit, comme vous avez laissé l'appel explicite à __init__, çà doit planter pareil: pourquoi poster?

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

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Novembre 2011
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2011
    Messages : 95
    Points : 34
    Points
    34
    Par défaut
    dsl j'ai oublié de marquer que justement ça plante et je ne comprenais pas pourquoi. Pourquoi quand j'essaye votre exemple il me dit:
    AttributeError: A instance has no attribute 'hello'

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par Rémi1995 Voir le message
    dsl j'ai oublié de marquer que justement ça plante et je ne comprenais pas pourquoi. Pourquoi quand j'essaye votre exemple il me dit:
    AttributeError: A instance has no attribute 'hello'
    Relisez ma prose.... les ">>>" et autres "..." signalent que ces instructions ont été tapées directement sous la console Python et elles se sont bien déroulées...

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

  7. #7
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Rémi1995 Voir le message
    il m'affiche TypeError: unbound method __init__() must be called with TFRecordWriter instance as first argument (got str instance instead).
    Je ne comprends pas ce qu'il veut.
    As-tu lu l'erreur et essayer de comprendre (traduire en français peut-être) ?

    Citation Envoyé par wiztricks Voir le message
    Avec Python, __init__ permet d'initialiser l'instance d'une classe mais la méthode n'a pas a être appelée directement.
    Citation Envoyé par Rémi1995 Voir le message
    TW = tf.python_io.TFRecordWriter.__init__("e.txt");
    On te dit de ne pas l'appeler directement. Que fais-tu ? Tu l'appelles directement... Je confirme : tu ne lis pas ce qu'on t'écrit (que ce soit wiztricks ou Python). En général, ça sert de lire ce qu'écrivent les gens hein

    Je rejoins wiztricks d'ailleurs : tu devrais revoir la base sur la création d'objet en Python, notamment ce qu'est un constructeur et comment on le définit avec la méthode __init__(). Généralement en Python, les méthodes ou variables commençant par __ sont "privées". Une vraie visibilité privée n'existe pas en Python (je me trompe ?) donc ce n'est qu'une convention mais cela veut dire que tu devrais toujours te poser une question quand tu appelles une méthode avec un nom comme __f__().

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Novembre 2011
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2011
    Messages : 95
    Points : 34
    Points
    34
    Par défaut
    Oui je m'en suis rendu compte.
    Merci beaucoup à vous deux.
    Une petite question pour être sur d'avoir bien compris:
    il faut faire
    class k:
    pass

    a = k()

    et dans mon cas
    RE = tf.python_io.TFRecordWriter("e.txt")
    RE.write("Coucou") # il m'affiche pleins de caractère illisible avant et après avoir écrit coucou
    Non ?

Discussions similaires

  1. [Python 2.X] TypeError :__init__() lors de l'appel d'une classe
    Par aurelie.guegan.15 dans le forum Général Python
    Réponses: 2
    Dernier message: 10/12/2014, 10h43
  2. Réponses: 4
    Dernier message: 26/12/2012, 02h29
  3. Réponses: 2
    Dernier message: 23/02/2010, 19h45
  4. Methode de drcherche a l,interieur de basse de donner texte
    Par philippe V dans le forum Autres SGBD
    Réponses: 4
    Dernier message: 03/12/2002, 10h20

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