2013-04-05 5 views
0

Это делается в питон 2.7.3:Импорт переменных дает ошибку атрибут питона

x.py:

import y 
global path_variable 
path_variable = "a_path" 
y.procedure() 

y.py:

import x 
def procedure(): 
    return x.path_variable 

Теперь, когда я бегу XI получить эта нечетная ошибка:

AttributeError: 'module' object has no attribute 'path_variable' 

Почему это? Насколько я знаю, python позволяет импортировать переменные. Я делаю что-то неправильно?

ответ

2

Я считаю, что это всего лишь проблема круговой зависимости. В принципе, вы можете исправить этот код, но вы, вероятно, захотите переосмыслить дизайн своего пакета, чтобы у вас не было двух модулей, которые импортируют друг друга.

Кроме того, вы не должны объявлять path_variable как global, поскольку он используется только при изменении переменных в глобальной области видимости внутри локальной области, и его использование также обычно не рекомендуется в Python.

x.py

import y 
path_variable = "a_path" 

if __name__ == "__main__": 
    y.procedure() 

y.py

import x 
def procedure(): 
    return x.path_variable 
+0

Это не весь код. Итак, x является глобальной по причине. Я просто подумал, что могу сказать, что это было глобально, и посмотрим, изменится ли это. – madprogramer

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