2014-11-11 4 views
-3

Я создаю приложение, состоящее из нескольких модулей. Существует один файл main.py, который будет файлом для запуска приложения. Файл main.py загрузит файл (ы) конфигурации и поместит их в переменную config. Он также импортирует файл приложения-модуля (файл, который содержит исходный код самого приложения, класс приложения a.k.a.) и запускает экземпляр.Сделать глобальные переменные доступными в нескольких модулях

Я не очень разбираюсь в кодировании Python, и мой самый большой вопрос в том, что я делаю это правильно, используя основной файл для обработки всех необходимых материалов (например, загрузка файлов конфигурации). Проблема, с которой я сейчас сталкиваюсь, заключается в том, что я не могу получить доступ к «config» -переменной, которая была определена в main.py-файле из любого другого модуля и/или Python-файла.

Возможно ли сделать глобальную переменную для значений конфигурации exc.? Я знаю, что в PHP я использовал для создания одноэлементного объекта, который содержит все конкретные глобальные аргументы. Я мог бы также создать глобальную переменную ROOT для хранения полного пути к корню приложения, который необходим для загрузки/импорта новых файлов, это также невозможно в Python, насколько я знаю.

Я надеюсь, что кто-то может помочь мне в этом или отправить меня в правильном направлении, чтобы я мог продолжить работу над этим проектом.

+0

Поделитесь соответствующим кодом. Также глобальные таблицы очень плохие: http://programmers.stackexchange.com/questions/148108/why-is-global-state-so-evil – DBedrenko

+0

В PHP вы используете одноэлемент? Ну, каждый модуль Python является одноэлементным. Создайте модуль 'settings' для обработки данных конфигурации и импортируйте этот модуль в любой другой модуль, в котором он вам нужен. – Matthias

+0

Из-за частного проекта я пока не могу поделиться каким-либо кодом, но спасибо за комментарий. @Matthias: Спасибо за реакцию! Это означало бы, что для каждого файла мне нужны настройки, мне придется импортировать модуль настроек и создать новый объект настроек. Это будет перезагружать весь файл конфигурации каждый раз, когда я это делаю, правильно? Или возможно ли сделать модуль настроек всегда возвращать один и тот же экземпляр? – Qlii256

ответ

0

Ответ, кажется, Маттиас:

Использования от параметров импорта AppName.modules, а затем получить доступ к данным в модуле с settings.value. Согласно PEP-8, руководство по стилю для кода Python, импорт подстановочных знаков следует избегать и фактически приведет к нежелательному поведению в этом случае.

Спасибо вам всем за помощь!

Смежные вопросы