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 :

AttributeError - Gestion des erreurs


Sujet :

Python

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 34
    Par défaut AttributeError - Gestion des erreurs
    Bonjour a tous,
    j ai un problème relatif a la gestion des erreurs,
    je parviens avec la fonction :

    except AttributeError,x:
    print x

    a récupérer les infos sur le module posant problème, mais je ne sais pas comment récupérer "l'objet" précis (mes objet sont à "geometries variable")


    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
     
    class Ma_class:
        def __init__(self,test):
    	    self.F1="ceci est un test"
                if test=="toto":
    		    self.F2="toto"
    	    else:pass
     
     
    >>> A=Ma_class("FIFI")
    >>> A.F1
    'ceci est un test'
    >>> A.F2
    Traceback (most recent call last):
      File "<pyshell#55>", line 1, in <module>
        A.F2
    AttributeError: Ma_class instance has no attribute 'F2'
    Voila, je souaite recupere le non de l'objet "A"
    merci par avance,

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 93
    Par défaut
    Bonjour, je reprend le message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    1. Traceback (most recent call last):
    2.   File "<pyshell#55>", line 1, in <module>
    3.     A.F2
    4. AttributeError: Ma_class instance has no attribute 'F2'
    Ligne 3 : A est le nom de l'instance qui a levé l'exception.
    Ligne 4 : Ma_class est le nom de la classe dont A est l'instance.

    C'est tout ce qu'on peut souhaiter savoir à propos d'un objet, non ? Je ne vois pas ce que tu appelles le "nom" de l'objet...

    A part ça, le 'else:pass' du constructeur de Ma_class ne sert à rien.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 34
    Par défaut
    Merci pour le reponse,
    j ai en effet un peu trop simplifié l'exemple,

    Python me renvoi en verité la ligne de code qui pose probleme,
    car si j'ecrit :
    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 Ma_class:
        def __init__(self,test):
    	    self.F1="ceci est un test"
                if test=="toto":
    		    self.F2="toto"
     
     
    >>> A=Ma_class("FIFI")
    >>> B=Ma_class("toto")
    >>>A.F2+B.F1
    Traceback (most recent call last):
      File "<pyshell#10>", line 1, in <module
    A.F2+B.F1+B.F2
    AttributeError: Ma_class instance has no attribute 'F2'
    Python ne sais pas me dire si c'est l'instance A ou B qui pose probleme !!!

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 93
    Par défaut
    Effectivement, c'est problématique... Ca ne semble pas possible en se basant sur la seule exception.

    Mais le fait de définir la propriété F2 dans une structure conditionnelle, c'est juste pour l'exemple, ou tu as réellement programmé comme cela ?

    C'est vrai que Python ne permet pas de déclarer des variables, mais en POO il est important que toutes les propriétés existent lors de l'instanciation. Tu ne peux pas te permettre de définir des propriétés sous certaines conditions, il faut qu'elles soient initialisées.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    class Ma_class:
        def __init__(self,test):
            self.F1="ceci est un test"
            self.F2 = ""
            if test=="toto":
                self.F2="toto"

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 34
    Par défaut
    Oui, j ai programmé mon objet comme cela,
    les objets sont créés à partir d'un fichier source,ils ont ou non certains attributs,

    les formules A.F1+B.F2+A.F2 viennent des utilisateurs,

    je souhaitai tester à l'occasion de l'exécution de ces formules l'existence des instances, si il y avait un problème, en informer l'utilisateur, et renseigner un fichier "Pb_txt, et continuer le programme, ...

    Je vois 1 solution :
    - demander de façon explicite à l'utilisateur ces besoins et faire un test.

    Merci en tout cas pour ta réponse.

Discussions similaires

  1. [FB] Gestion des erreurs et application francophone
    Par Benjamin GAGNEUX dans le forum Installation
    Réponses: 10
    Dernier message: 20/05/2006, 14h54
  2. [struts][Datasource]Gestion des erreurs
    Par GreenJay dans le forum Struts 1
    Réponses: 8
    Dernier message: 15/09/2004, 16h51
  3. [VB6] Gestion des erreurs dans une dll
    Par zimba-tm dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 02/08/2004, 11h20
  4. [XSLT]Est ce qu'il y'a la gestion des erreur en xslt ?
    Par miloud dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 04/02/2004, 17h19
  5. [LG]gestion des erreurs
    Par frontin dans le forum Langage
    Réponses: 3
    Dernier message: 29/11/2003, 22h41

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