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 :

utiliser une variable globale d'un fichier à l'autre


Sujet :

Python

  1. #1
    Membre régulier
    Profil pro
    informatique
    Inscrit en
    Novembre 2009
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : informatique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 167
    Points : 88
    Points
    88
    Par défaut utiliser une variable globale d'un fichier à l'autre
    Bonsoir ,
    mon problème est le suivant: j'ai declaré une variable global "var " ,dans un fichier a.py, auquel j'affecte une valeur. l'instruction d'affectation se situde dans une methode.
    dans mon autre fichier b.py j'ai importé le fichier a.py et en voulant afficher cette variable global j'ai une erreur de type indefined variable.

    comment faire pour afficher cette variable global dans mon fichier b.py

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut
    En Python, les variables "globales" sont globales au module pas au programme.
    Dans la pratique, çà se traduit par une indirection.
    i.e. dans le module "b", on peut ecrire:
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre régulier
    Profil pro
    informatique
    Inscrit en
    Novembre 2009
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : informatique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 167
    Points : 88
    Points
    88
    Par défaut
    mon fichier b--->stock_move.py
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #stock_py
    import  purchase_order
    logger.warn("-------ma variable currency*************************  ------%s",purchase_order.var)# ceci est fait pour afficher je reçois comme erreur 
     
    #'module'  object has no attribut 'var'

    mon fichier a(purchase_order.py)---> ou est definie la variable global var

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    def _create_pickings(self, cr, uid, order, order_lines, picking_id=False, context=None): 
     
     
            res = super(purchase_order,self)._create_pickings(cr, uid, order, order_lines, picking_id, context)
            picking_id = int(res[0])
            landing_cost_object = self.pool.get('purchase.landing.cost.position')
            for order_cost in order.landing_costs_line_ids:
                vals = {}
                vals['product_id'] = order_cost.product_id.id
                vals['partner_id'] = order_cost.partner_id.id
                #priclist=order_cost.purchase_order_id.pricelist_id
     
     
     
                #text=order_cost.purchase_order_id.pricelist_id
                logger.warn("-------pricelist__id********************** ------%s",order_cost.purchase_order_id.pricelist_id.currency_id.id)
     
     
                #stock_picking = self.pool.get('product.pricelist').search(cr, uid, [('pricelist_id','=', 'priclist')] )
               # logger.warn("-------pricelist__id********************** ------%s",stock_picking.currency_id)
     
     
     
                """objcur=self.pool.get('purchase.landing.cost.position')
            idss=objcur.search(cr,uid,[('product_id','=','order_cost.product_id.id')])
            
            for idf in idss:
                maclass_rec = objcur.browse(cr, uid, idf)
                logger.warn("-------partner_id********************** ------%s",maclass_rec.partner_id)"""
                vals['amount'] = order_cost.amount
                vals['distribution_type'] = order_cost.distribution_type
                vals['picking_id'] = picking_id
                landing_cost_object.create(cr, uid, vals, context=None)
     
            picking_obj = self.pool.get('stock.picking.in')
     
            global var
            var = order_cost.purchase_order_id.pricelist_id.currency_id.id # ici est declaré ma variable global
     
     
            return res

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    La question que vous devriez vous poser est de savoir quand sera créé le var de l'instruction global var.
    Il n'est pas difficile de lancer la console et d'y taper:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    >>> def f():
    ...    global var
    ...    var = 1
    ...
    >>> var
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    NameError: name 'var' is not defined
    >>> f()
    >>> var
    1
    >>>
    Et je ne vais pas essayer de vous expliquer pourquoi: la documentation ou les tutos feront cela bien mieux que moi.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre régulier
    Profil pro
    informatique
    Inscrit en
    Novembre 2009
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : informatique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 167
    Points : 88
    Points
    88
    Par défaut
    tout ce que je sais c'est que l'instruction qui affecte la valeur var s'execute avant l'execution de mon fichier stock_move.py

    avant meme d’exécuter mon programme , python me signale cette erreur :undefined variable from import: var (au niveau du fichier stock_move.py)

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Essayez de comprendre le code que j'ai posté.
    Désolé, mais je ne peux rien faire de plus.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Membre régulier
    Profil pro
    informatique
    Inscrit en
    Novembre 2009
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : informatique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 167
    Points : 88
    Points
    88
    Par défaut
    j'ai bien lu votre code , j'ai déclaré global var en dehors de toute méthode . je devrais ainsi accéder a cette variable , mais ce n'est pas le cas.
    pourrai je avoir un indice

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par sheridan08 Voir le message
    j'ai bien lu votre code , j'ai déclaré global var en dehors de toute méthode . je devrais ainsi accéder a cette variable , mais ce n'est pas le cas.
    pourrai je avoir un indice
    Ne vous ai je pas déjà suggéré d'ouvrir un tuto?
    "déclarer une variable", c'est dans les tous premiers chapitres.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  9. #9
    Membre régulier
    Profil pro
    informatique
    Inscrit en
    Novembre 2009
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : informatique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 167
    Points : 88
    Points
    88
    Par défaut
    oui c'est réglé. j'ai tout simplement déclaré var au tt debut de la methode et je l'ai initialisé a zero

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 26/02/2009, 07h11
  2. Comment utiliser une variable globale de dll ?
    Par Chamatho dans le forum Langage
    Réponses: 14
    Dernier message: 29/11/2008, 20h22
  3. [E-03] Utiliser une variable globale de type Const pour mes colonnes
    Par Mimosa777 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 23/10/2008, 20h48
  4. Utiliser une variable comme nom de fichier
    Par lo00_ dans le forum MATLAB
    Réponses: 1
    Dernier message: 28/06/2006, 13h57
  5. [sql] comment utiliser une variable global
    Par imedg dans le forum Oracle
    Réponses: 21
    Dernier message: 02/05/2006, 15h21

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