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 :

Assignation d'une variable globale dans une fonction .


Sujet :

Python

Vue hybride

moithibault Assignation d'une variable... 26/12/2010, 15h24
afranck64 Bonjour, As-tu pensé à créer... 26/12/2010, 15h48
moithibault Ouioui j'appel bien ma... 26/12/2010, 16h04
malick021988 Essaye a la place de 'print... 26/12/2010, 17h01
moithibault AttributeError: 'Classe'... 26/12/2010, 17h27
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Avatar de moithibault
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2009
    Messages : 124
    Par défaut Assignation d'une variable globale dans une fonction .
    Bonjour ,
    Je souhaite assigner une variable globale dans une méthode
    (variable qui sert à configurer mon programme) Pour cela je fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    VAR_GLOBALE=None
     
    class MaClasse(object):
        [...]
        def maMethode(self):
             global VAR_GLOBALE
             if ([...]):
                  VAR_GLOBALE=x
             else :
                  VAR_GLOBALE=y
    La variable VAR_GLOBALE reste à None aprés l'appel de cette méthode . Pouvez-vous m'aider , merci!

  2. #2
    Membre très actif
    Avatar de afranck64
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 592
    Par défaut
    Bonjour,
    As-tu pensé à créer une instance de MaClasse et à appeler sa méthode maMethode?
    Et au fait, les méthodes de classes ont toujours au moins un paramètre: la classe. Par convention, on le nomme "self".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    VAR_GLOBALE=None
     
    class MaClasse(object):
        def maMethode(self):    #Pour dire a python que c'est une methode de MaClasse
            global VAR_GLOBALE
            if (1):
                VAR_GLOBALE = "La variable a changee"
            else :
                VAR_GLOBALE = "La varialbe a toujours changee"
     
    me = MaClasse()
    me.maMethode()
    print VAR_GLOBALE
    @+ et bon code
    Win 10 64 bits / Linux Mint 18, - AMD A6 Quad: Py27 / Py35
    CONTENU D'UNE QUESTION
    Exemples:
    - Configuration (système d'exploitation, version de Python et des bibliothèques utilisées)
    - Code source du morceau de programme où il y a un bogue
    - Ligne de code sur laquelle le bogue apparaît
    - Erreur complète retournée pas l'interpréteur Python
    - Recherche déjà effectuée (FAQ, Tutoriels, ...)
    - Tests déjà effectués

  3. #3
    Membre confirmé
    Avatar de moithibault
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2009
    Messages : 124
    Par défaut
    Citation Envoyé par afranck64 Voir le message
    Bonjour,
    As-tu pensé à créer une instance de MaClasse et à appeler sa méthode maMethode?
    Et au fait, les méthodes de classes ont toujours au moins un paramètre: la classe. Par convention, on le nomme "self".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    VAR_GLOBALE=None
     
    class MaClasse(object):
        def maMethode(self):    #Pour dire a python que c'est une methode de MaClasse
            global VAR_GLOBALE
            if (1):
                VAR_GLOBALE = "La variable a changee"
            else :
                VAR_GLOBALE = "La varialbe a toujours changee"
     
    me = MaClasse()
    me.maMethode()
    print VAR_GLOBALE
    @+ et bon code

    Ouioui j'appel bien ma méthode dans mon programme (vérification avec un print() ) Et excuse-moi j'ai oublié le self dans mon exemple ici mais pas dans mon code . Le problème persiste toujours . Je vais essayer de fournir tout les éléments car je n'ai pas été bien clair

    ********************************************************************************************************
    EDIT: Dans cet exemple la situation marche bien :


    fichier test.py
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    VAR_GLOBALE=1
    class Classe(object):
        def __init__(self):
            pass
        def methode(self):
            global VAR_GLOBALE
            if(1):
     
                VAR_GLOBALE=5
    maclasse=Classe()
    maclasse.methode()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    from test import *
    print VAR_GLOBALE

    Et dans celle-ci voici exactement l'exemple de ma situation (qui ne marche pas) :

    test.py:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    VAR_GLOBALE=1
    class Classe(object):
        def __init__(self):
            pass
        def methode(self):
            global VAR_GLOBALE
            if(1):
     
                VAR_GLOBALE=5
    test2.py:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    from test import *
     
    class ClasseDeux(object):
        def __init__(self):
            pass
        def methode(self):
           maclasse=Classe()
           maclasse.methode()
           global VAR_GLOBALE
           print VAR_GLOBALE
     
    app=ClasseDeux()
    app.methode()

    La methode m'affiche 1 au lieu du 5 souhaité . Cet exemple refléte mon probléme , comment y remédier ? Merci

  4. #4
    Membre confirmé
    Profil pro
    Développeur Back-End
    Inscrit en
    Septembre 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Septembre 2007
    Messages : 81
    Par défaut
    Essaye a la place de 'print VAR_GLOBALE' un 'print maclasse.VAR_GLOBALE'

  5. #5
    Membre confirmé
    Avatar de moithibault
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2009
    Messages : 124
    Par défaut
    Citation Envoyé par malick021988 Voir le message
    Essaye a la place de 'print VAR_GLOBALE' un 'print maclasse.VAR_GLOBALE'
    AttributeError: 'Classe' object has no attribute 'VAR_GLOBALE'

  6. #6
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Ce code fonctionne. J'ai seulement corrigé quelques anomalies d'indentation:

    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
     
    VAR_GLOBALE=None
     
    class MaClasse(object):
        def maMethode(self):
            global VAR_GLOBALE
            if VAR_GLOBALE==None:
                VAR_GLOBALE=1
            else:
                VAR_GLOBALE=2
     
    x = MaClasse()
     
    x.maMethode()
    print VAR_GLOBALE
     
    x.maMethode()
    print VAR_GLOBALE
    Ce qui affiche:

    Tyrtamos

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

Discussions similaires

  1. [rendre une variable globale dans une fonction]
    Par emilek dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 28/07/2009, 18h11
  2. Réponses: 6
    Dernier message: 21/07/2009, 11h37
  3. Réponses: 15
    Dernier message: 27/03/2009, 13h37
  4. Appeler une variable globale dans la fonction eval
    Par Romanops dans le forum Langage
    Réponses: 2
    Dernier message: 03/08/2007, 04h24
  5. Réponses: 11
    Dernier message: 08/02/2006, 16h59

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