J'ai deux modules, a.py et b.py. Je veux que les globaux de a.py soient disponibles dans b.py comme ceci:

A.py:

#!/usr/bin/env python
var = "this is global"
import b
b.foo()

B.py:

#!/usr/bin/env python
var = "this is global"
def foo():
    print var

Actuellement, je re-déclare les globales dans chaque module. Il doit y avoir un moyen plus simple.

3
tahoar 12 oct. 2011 à 21:15

3 réponses

Meilleure réponse

Créez un module de paramètres qui a partagé des globaux si c'est ce que vous voulez. De cette façon, vous importez et ne référencez chaque global qu'une seule fois, et vous les gardez isolés dans l'espace de noms du module de paramètres. C'est une bonne chose.

#settings.py
var = 'this is global'

# a.py
import settings
import b
b.foo()

# b.py
import settings
def foo():
    print settings.var
3
jathanism 12 oct. 2011 à 17:24

Définissez vos globaux dans c.py et importez-les dans a.py et b.py

2
Mike Pennington 12 oct. 2011 à 17:24

En faisant b.py exiger des globaux à partir de a.py, vous avez créé des classes qui dépendent les unes des autres, ce qui est une mauvaise conception.

Si vous avez des variables statiques à partager, pensez à créer des c.py qui a.py et b.py peut importer et référencer.

Si vous avez des variables dynamiques qui doivent être partagées, pensez à créer une classe paramètres qui peut être instanciée et transmise entre les modules.

2
WilHall 12 oct. 2011 à 17:24
7743905