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 :

utilisation de inspect.getouterframes


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de awalter1
    Inscrit en
    Août 2004
    Messages
    994
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 994
    Par défaut utilisation de inspect.getouterframes
    Bonjour,
    J'ai une application en python/gtk (python 2.7).
    j'ai une erreur déclenché dan la procédure suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    def abstract():
     
        import inspect
     
        caller = inspect.getouterframes(inspect.currentframe())[1][3]
        print "currentframe=",inspect.currentframe()
        print "getouterframes="
        for i in inspect.getouterframes(inspect.currentframe()):
    	print i
     
        print "getouterframes[1][3]=",inspect.getouterframes(inspect.currentframe())[1][3]
        print
        raise NotImplementedError(caller + ' must be implemented in subclass')
    J'ai rajouté les print afin d'avoir les détails sur ce que retourne les fonctions d'inspect.
    En réalité je ne comprends pas pourquoi une exception est levée et comment l'interprêter. Voici l'erreur signalée :
    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
    currentframe= <frame object at 0x9ed8d9c>
    getouterframes=
    (<frame object at 0x9ed8d9c>, '/rsynergy/ccm_wa/NEDI-ACE2010A_prep/NEDI/HMI/genericpanel.py', 37, 'abstract', ['    for i in inspect.getouterframes(inspect.currentframe()):\n'], 0)
    (<frame object at 0x9f0297c>, '/rsynergy/ccm_wa/NEDI-ACE2010A_prep/NEDI/HMI/genericpanel.py', 313, 'GenericPanelGet_AllPages', ['\t\tabstract()\n'], 0)
    (<frame object at 0x9fd251c>, '/rsynergy/ccm_wa/NEDI-ACE2010A_prep/NEDI/HMI/genericpanel.py', 323, 'GenericPanelGet_SamePages', ['\t\t\tfor page in panel.GenericPanelGet_AllPages():\n'], 0)
    (<frame object at 0x9ee64a4>, '/rsynergy/ccm_wa/NEDI-ACE2010A_prep/NEDI/HMI/page.py', 455, 'PageWinDialogReturn', ['\t\tfor page in self.f_GetSamePages():\n'], 0)
    (<frame object at 0x9fc8cc4>, '/rsynergy/ccm_wa/NEDI-ACE2010A_prep/NEDI/HMI/windialogedition.py', 398, 'WinDialogCallback', ['\t\t\tcallbackExit(True)\n'], 0)
    (<frame object at 0x9bab8ec>, '/rsynergy/ccm_wa/NEDI-ACE2010A_prep/NEDI/HMI/windialogedition.py', 701, 'WinDialogCallback', ['\t\tWinDialogEdition__.WinDialogCallback(self, dialogWidget, response, callbackExit)\n'], 0)
    (<frame object at 0x9b05254>, './HMI/nedi.py', 322, 'ApplicationRun', ['\t\tgtk.main()\n'], 0)
    (<frame object at 0x92b07d4>, './HMI/nedi.py', 858, '<module>', ['\tnedi.ApplicationRun()\n'], 0)
    getouterframes[1][3]= GenericPanelGet_AllPages
     
    Traceback (most recent call last):
      File "/rsynergy/ccm_wa/NEDI-ACE2010A_prep/NEDI/HMI/windialogedition.py", line 701, in WinDialogCallback
        WinDialogEdition__.WinDialogCallback(self, dialogWidget, response, callbackExit)
      File "/rsynergy/ccm_wa/NEDI-ACE2010A_prep/NEDI/HMI/windialogedition.py", line 398, in WinDialogCallback
        callbackExit(True)
      File "/rsynergy/ccm_wa/NEDI-ACE2010A_prep/NEDI/HMI/page.py", line 455, in PageWinDialogReturn
        for page in self.f_GetSamePages():
      File "/rsynergy/ccm_wa/NEDI-ACE2010A_prep/NEDI/HMI/genericpanel.py", line 323, in GenericPanelGet_SamePages
        for page in panel.GenericPanelGet_AllPages():
      File "/rsynergy/ccm_wa/NEDI-ACE2010A_prep/NEDI/HMI/genericpanel.py", line 313, in GenericPanelGet_AllPages
        abstract()
      File "/rsynergy/ccm_wa/NEDI-ACE2010A_prep/NEDI/HMI/genericpanel.py", line 41, in abstract
        raise NotImplementedError(caller + ' must be implemented in subclass')
    NotImplementedError: GenericPanelGet_AllPages must be implemented in subclass
    Je lis que GenericPanelGet_AllPages (qui est bien une fonction de mon appli) doit être implémentée, que cela signifie t'il ?
    Ma fonction GenericPanelGet_AllPages est très simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	def GenericPanelGet_AllPages(self):
    		abstract()
    Quelqu'un peut t'il m'éclairer ?
    merci

  2. #2
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonjour,

    Ben en fait il n'y a pas d'erreur...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	def GenericPanelGet_AllPages(self):
    		abstract()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    def abstract():
        ....
        raise NotImplementedError(caller + ' must be implemented in subclass')
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      File "/rsynergy/ccm_wa/NEDI-ACE2010A_prep/NEDI/HMI/genericpanel.py", line 41, in abstract
        raise NotImplementedError(caller + ' must be implemented in subclass')
    NotImplementedError: GenericPanelGet_AllPages must be implemented in subclass
    C'est vous qui la générez dans abstract (raise)

    Ou je n'ai pas compris la question.

    @+

  3. #3
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Maintenant si la question est sur inspect celui-ci fait bien son travail qui est de retrouver les informations sur le code:
    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
    currentframe= <frame object at 0x9ed8d9c>
    getouterframes=
    (<frame object at 0x9ed8d9c>, '/rsynergy/ccm_wa/NEDI-ACE2010A_prep/NEDI/HMI/genericpanel.py', 37, 'abstract', ['    for i in inspect.getouterframes(inspect.currentframe()):\n'], 0)
    (<frame object at 0x9f0297c>, '/rsynergy/ccm_wa/NEDI-ACE2010A_prep/NEDI/HMI/genericpanel.py', 313, 'GenericPanelGet_AllPages', ['\t\tabstract()\n'], 0)
    (<frame object at 0x9fd251c>, '/rsynergy/ccm_wa/NEDI-ACE2010A_prep/NEDI/HMI/genericpanel.py', 323, 'GenericPanelGet_SamePages', ['\t\t\tfor page in panel.GenericPanelGet_AllPages():\n'], 0)
    (<frame object at 0x9ee64a4>, '/rsynergy/ccm_wa/NEDI-ACE2010A_prep/NEDI/HMI/page.py', 455, 'PageWinDialogReturn', ['\t\tfor page in self.f_GetSamePages():\n'], 0)
    (<frame object at 0x9fc8cc4>, '/rsynergy/ccm_wa/NEDI-ACE2010A_prep/NEDI/HMI/windialogedition.py', 398, 'WinDialogCallback', ['\t\t\tcallbackExit(True)\n'], 0)
    (<frame object at 0x9bab8ec>, '/rsynergy/ccm_wa/NEDI-ACE2010A_prep/NEDI/HMI/windialogedition.py', 701, 'WinDialogCallback', ['\t\tWinDialogEdition__.WinDialogCallback(self, dialogWidget, response, callbackExit)\n'], 0)
    (<frame object at 0x9b05254>, './HMI/nedi.py', 322, 'ApplicationRun', ['\t\tgtk.main()\n'], 0)
    (<frame object at 0x92b07d4>, './HMI/nedi.py', 858, '<module>', ['\tnedi.ApplicationRun()\n'], 0)
    getouterframes[1][3]= GenericPanelGet_AllPages
     
    Traceback (most recent call last):
      File "/rsynergy/ccm_wa/NEDI-ACE2010A_prep/NEDI/HMI/windialogedition.py", line 701, in WinDialogCallback
        WinDialogEdition__.WinDialogCallback(self, dialogWidget, response, callbackExit)
      File "/rsynergy/ccm_wa/NEDI-ACE2010A_prep/NEDI/HMI/windialogedition.py", line 398, in WinDialogCallback
        callbackExit(True)
      File "/rsynergy/ccm_wa/NEDI-ACE2010A_prep/NEDI/HMI/page.py", line 455, in PageWinDialogReturn
        for page in self.f_GetSamePages():
      File "/rsynergy/ccm_wa/NEDI-ACE2010A_prep/NEDI/HMI/genericpanel.py", line 323, in GenericPanelGet_SamePages
        for page in panel.GenericPanelGet_AllPages():
      File "/rsynergy/ccm_wa/NEDI-ACE2010A_prep/NEDI/HMI/genericpanel.py", line 313, in GenericPanelGet_AllPages
        abstract()
      File "/rsynergy/ccm_wa/NEDI-ACE2010A_prep/NEDI/HMI/genericpanel.py", line 41, in abstract

  4. #4
    Membre éprouvé Avatar de awalter1
    Inscrit en
    Août 2004
    Messages
    994
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 994
    Par défaut
    Ok merci
    donc en fait cela fait ce qui est demandé dans le code, mais je dois commenter la ligne ou il y a le raise car sinon l'appli part en erreur et je ne sais pas comment l'éviter.

  5. #5
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    A vrais dire je ne comprend pas la question et le but d'abstract*...
    C'est pour tester inspect ?
    Cherchez vous a faire quelque chose de précis ?

    *Qui au passage est une fonction, pas une procédure: Pas de 'procédure' en Python puisque cela 'retourne' None

  6. #6
    Membre éprouvé Avatar de awalter1
    Inscrit en
    Août 2004
    Messages
    994
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 994
    Par défaut
    Comme je reprends un code qui n'est pas de moi, je ne sais pas non plus la raison de cette méthode abstract() si ce n'est de détecter les cas ou un héritage aurait du être fait et ne l'ai pas ...

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

Discussions similaires

  1. utilisation de imp et inspect
    Par magic.goby dans le forum Général Python
    Réponses: 8
    Dernier message: 12/10/2006, 19h35
  2. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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