глобальное пространство имен python недоступно - PullRequest
1 голос
/ 11 апреля 2019

Я могу запустить API.py, но не APP.py в том же каталоге.Ошибка "NameError: имя 'a' не определено".Является ли global () действительно глобальным?

API.py:

class Entity():
    def __init__(self,name,value):
        globals()[name]=value

if __name__ == '__main__':
    Entity('a',1)
    print(a)

APP.py

from API import Entity

if __name__ == '__main__':
    Entity('a',1)
    print(a)

1 Ответ

1 голос
/ 11 апреля 2019

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

Вместо того, чтобы Entity устанавливал глобальную переменную напрямую, возможно, вы могли бы заставить его вернуть значение и затем написать код в APP.py, чтобы установить значение глобально.

Альтернативой является размещение вашей глобальной переменной в общем модуле, который импортируется всеми остальными, и тогда каждый модуль будет иметь к ней доступ для чтения / записи.

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