Как разделить глобалы между импортированными модулями? - PullRequest
3 голосов
/ 12 октября 2011

У меня есть два модуля, a.py и b.py.Я хочу, чтобы глобальные переменные из a.py были доступны в b.py так:

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

В настоящее время я повторно объявляю глобальные переменные в каждом модуле.Должен быть более простой способ.

Ответы [ 3 ]

2 голосов
/ 12 октября 2011

Создайте модуль настроек, который имеет общие глобальные значения, если вы этого хотите.Таким образом, вы импортируете и ссылаетесь на каждый глобальный объект только один раз и сохраняете их изолированными в пространстве имен модуля настроек.Это хорошо.

#settings.py
var = 'this is global'

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

# b.py
import settings
def foo():
    print settings.var
2 голосов
/ 12 октября 2011

Определите ваши глобальные переменные в c.py и импортируйте их в a.py и b.py

2 голосов
/ 12 октября 2011

Создавая для b.py глобальные переменные из a.py, вы создали классы, которые зависят друг от друга, что является плохим дизайном.

Если у вас есть статические переменные, которые необходимо разделить, рассмотрите возможность создания c.py , которые одновременно a.py и b.py можно импортировать и ссылаться.

Если у вас есть динамические переменные, которые необходимо разделить, рассмотрите возможность создания класса settings , который можно создавать и передавать между модулями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...