Форум сайта python.su
Подскажите как создать в отдельном модуле статическую переменную (кэш БД), что б её один раз только инициализировать и потом использовать, независимо от того как подгружаются модули.
У меня такая проблема:
#!/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“reload(module1)” не надо, и все будет работать
Похоже я решил проблему, а тред видимо боян, т.к. не факт что вообще это возможно.
Офлайн
главное что-б эта переменная была не в стартовом модуле
Офлайн
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()
Офлайн
neol, reload потерял :)
Синглетон тут не нужен. И неизвестно, нужен ли он вообще.
Офлайн