Ну, модуль 'a' не имеет атрибута 'x'. В модуле 'a' есть функция, которая создает переменную 'x', но пока метод не вызывается, атрибут отсутствует.
Вы можете изменить файл c.py
на:
import a
a.run()
print(a.x)
Другое решение - убедиться, что функция run()
всегда вызывается при импорте модуля 'a'. В настоящее время это не так, из-за строки if __name__ == '__main__':
.
Если вы не хотите запускать код, а только хотите убедиться, что переменная существует, просто определите ее в модуле. Перед определением вашего метода run()
просто добавьте x = None
(или используйте любое другое начальное значение, которое вы предпочитаете).
Обратите внимание, однако, что есть другие проблемы с вашим кодом и с использованием глобальных переменных таким образом это действительно плохой шаблон программирования, который, вероятно, приведет к другим проблемам позже. Интересно, чего вы хотите достичь. Вероятно, было бы лучшим решением, если бы вы могли передать x
в качестве аргумента функции run()
вместо ссылки на глобальную переменную. Но это выходит за рамки этого вопроса, и на него сложно ответить без дополнительной информации.