В Java все находится в форме класса.
Если вы хотите использовать любой объект, тогда у вас есть две фазы:
Пример:
Object a;
a=new Object();
То же самое для концепции массива
Item i[]=new Item[5];
i[0]=new Item();
Если вы не дают секцию инициализации, тогда возникает NullpointerException
.
Я не подтверждаю это решение всегда, форму или форму. Но если Вы добавите переменную к __builtin__
модуль, это будет доступно, как будто глобальное от любого другого модуля, который включает __builtin__
- который является всеми ими по умолчанию.
a.py содержит
print foo
, b.py содержит
import __builtin__
__builtin__.foo = 1
import a
, результат состоит в том, что "1" печатается.
Редактирование: __builtin__
модуль доступен как локальный символ __builtins__
- это - причина несоответствия между двумя из этих ответов. Также обратите внимание, что __builtin__
был переименован к builtins
в python3.
Определите модуль (назовите его "globalbaz"), и определите переменные в нем. Все модули с помощью этого "псевдоглобального" должны импортировать "globalbaz" модуль и относиться к нему с помощью "globalbaz.var_name"
, Это работает независимо от места изменения, можно заменить переменную прежде или после импорта. Импортированный модуль будет использовать последнее значение. (Я протестировал это в игрушечном примере)
Для разъяснения, globalbaz.py взгляды точно так же, как это:
var_name = "my_useful_string"
При необходимости в глобальной переменной перекрестного модуля, возможно, просто, простая глобальная переменная уровня модуля будет достаточна.
a.py:
var = 1
b.py:
import a
print a.var
import c
print a.var
c.py:
import a
a.var = 2
Тест:
$ python b.py
# -> 1 2
Реальный пример: global_settings.py Django (хотя в приложениях Django настройки используются путем импорта объект django.conf.settings
).
Глобальные переменные обычно являются плохой идеей, но можно сделать это путем присвоения __builtins__
:
__builtins__.foo = 'something'
print foo
кроме того, сами модули являются переменными, к которым можно получить доступ от любого модуля. Таким образом, если Вы определяете модуль, названный my_globals.py
:
# my_globals.py
foo = 'something'
Тогда можно использовать это отовсюду также:
import my_globals
print my_globals.foo
Используя модули вместо того, чтобы изменить __builtins__
обычно более чистый способ сделать globals этого вида.
Это походит на изменение __builtin__
пространство имен. Сделать это:
import __builtin__
__builtin__.foo = 'some-value'
не используют __builtins__
непосредственно (заметьте дополнительный "s") - по-видимому, это может быть словарем или модулем. Благодаря О¤О–О©О¤О–О™ОџОҐ для указания на это больше может быть найдено здесь .
Теперь foo
доступно для использования везде.
я не рекомендую делать это обычно, но использование этого до программиста.
Присвоение ему должно быть сделано как выше, просто установка foo = 'some-other-value'
только установит его в текущем пространстве имен.
Вы можете передавать глобальные значения одного модуля другому:
В модуле A:
import module_b
my_var=2
module_b.do_something_with_my_globals(globals())
print my_var
В модуле B:
def do_something_with_my_globals(glob): # glob is simply a dict.
glob["my_var"]=3