Найти - Пользователи
Полная версия: Статика в питоне
Начало » Python для новичков » Статика в питоне
1
alexx11
Подскажите как создать в отдельном модуле статическую переменную (кэш БД), что б её один раз только инициализировать и потом использовать, независимо от того как подгружаются модули.
У меня такая проблема:
#!/usr/bin/python
# encoding: utf-8
# module - 1
var1 = {"a":"1"}
#!/usr/bin/python
# encoding: utf-8
# module - 2
import module1

def met2():
reload(module1)
print ("mudule2", module1.var1)
#!/usr/bin/python
# encoding: utf-8
# module - 3
import module1
import module2

module1.var1 = {"b":"2"}
module2.met2()
Результат такой:
bash# ./module3.py
('mudule2', {'a': '1'})
Как это правильно сделать?
alexx11
Похоже я решил проблему, а тред видимо боян, т.к. не факт что вообще это возможно.
o7412369815963
alexx11
Похоже я решил проблему, а тред видимо боян, т.к. не факт что вообще это возможно.
“reload(module1)” не надо, и все будет работать
o7412369815963
главное что-б эта переменная была не в стартовом модуле
neol
class Module(object):
_instance = None
var1 = {"a":"1"}

def __new__(cls, *args, **kwargs):
if not cls._instance:
cls._instance = super(Module, cls).__new__(
cls, *args, **kwargs)
return cls._instance
import module1

def met2():
mod = module1.Module()
print ("mudule2", mod.var1)
import module1
import module2

mod = module1.Module()
mod.var1 = {"b":"2"}
module2.met2()
python module3.py
('mudule2', {'b': ‘2’})

Слова для поиска: python singleton pattern
Kogrom
neol, reload потерял :)
Синглетон тут не нужен. И неизвестно, нужен ли он вообще.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB