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 :

références croisées objets NameError: global name is not defined


Sujet :

Python

  1. #1
    Membre régulier

    Profil pro
    Inscrit en
    Mars 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 41
    Points : 99
    Points
    99
    Par défaut références croisées objets NameError: global name is not defined
    bonjour,

    je chercher à faire un petit programme MVC avec tkinter (je poste ici car mon problème ne concerne pas tkinter).

    je lance le programme suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    from Tkinter import *
    from Fenetre1 import *
     
    class Controleur:
        def __init__(self):
            self.fenetre_courante=Fenetre1(Tk(),self)
     
    controleur=Controleur()
    le fichier Fenetre1 contient le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    from Tkinter import *
    from Controleur import *
     
    class Fenetre1:
        def __init__(self, master,_controleur):
            self.controleur=_controleur
     
            frame = Frame(master)
            frame.pack()
     
            self.button = Button(frame, text="QUIT", fg="red", command=frame.quit)
            self.button.pack(side=LEFT)
            master.mainloop()
    j'ai l'erreur suivante: NameError: global name 'Fenetre1' is not defined
    Pouvez m'expliquer ou est mon erreur?

  2. #2
    Membre éprouvé
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Points : 1 066
    Points
    1 066
    Par défaut
    Tu as des inclusions récursives:
    Le fichier Controleur.py inclut Fenetre.py, qui à son tour tente d'inclure Controleur.py
    Comme chaque fichier dépend d'un autre, impossible d'en parse un complètement, d'où l'erreur.

    La solution est simple. Fenetre ne semble pas directement dépendre de Controleur (dans le sens qu'il ne doit pas en instancier). Tu peux alors enlever l'import dans Fenetre.py:

  3. #3
    Expert éminent sénior
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Points : 10 067
    Points
    10 067

Discussions similaires

  1. Global name is not define?
    Par Enzymus dans le forum Général Python
    Réponses: 7
    Dernier message: 16/08/2011, 20h04
  2. NameError: global name 'thread' is not defined
    Par Balbuzard dans le forum Général Python
    Réponses: 6
    Dernier message: 15/07/2009, 06h52
  3. NameError: global name 'entr2' is not defined
    Par noquioz dans le forum Tkinter
    Réponses: 18
    Dernier message: 24/11/2008, 11h20
  4. NameError: name 'excel' is not defined
    Par billyrose dans le forum Général Python
    Réponses: 3
    Dernier message: 14/07/2008, 17h37
  5. Références croisées d'objets Oracle
    Par cdemedei dans le forum Oracle
    Réponses: 2
    Dernier message: 23/02/2006, 16h33

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