Python中跨文件共享的静态变量
我对Python非常陌生,我找不到一种在不同Python文件之间共享静态变量的方法。。。在Java中,这样做似乎很简单。。。以下是我想做的: data.py user1.py user2.py 对不起,这可能不是最好的例子,但它抓住了这个想法。。。我的问题是,如果我想:Python中跨文件共享的静态变量,python,static,singleton,Python,Static,Singleton,我对Python非常陌生,我找不到一种在不同Python文件之间共享静态变量的方法。。。在Java中,这样做似乎很简单。。。以下是我想做的: data.py user1.py user2.py 对不起,这可能不是最好的例子,但它抓住了这个想法。。。我的问题是,如果我想: list_vars = ['001'] var = 002 在运行user1.py和user2.py之后的某个/甚至其他python文件或类中(我认为user1.py和user2.py是同一软件包中通常同时运行的两个子程序),
list_vars = ['001']
var = 002
在运行user1.py和user2.py之后的某个/甚至其他python文件或类中(我认为user1.py和user2.py是同一软件包中通常同时运行的两个子程序),什么是“python方式”呢
非常感谢
========================================
问题更新:
为了更具体地说明问题,请允许我用以下方式描述问题:
data.py
有两个额外的文件,user1.py和user2.py,它们的内容暂时可以忽略
因此,假设user1.py和user2.py几乎同时运行,假设时间=0
- 时间=1时,有一条消息传入(带有message.event=“add” 和message.data=“001”),中的回调函数 data.py被触发,并且“001”被添加到变量列表中
- 在时间=2时,user1.py更新中的变量var data.py到“002”
- 在时间=3时,如果user2.py想要访问并打印
变量列出变量和变量,以及最新的值:
- 列表变量=[“001”]
- var=002
user1.py
和user2.py
。因此,类Shared
的静态值不会在不同的调用中保留
但这是一种完全正确的数据共享方式:在一个文件中声明类,甚至在其他文件中导入变量
但是Python不是Java,并且不需要所有东西都是类。你可以做:
- data.py
list_vars=[] var=“” def print_vars(): 打印“列表变量=”+str(共享的列表变量) 打印“var=”+Shared.var
- user1.py
import time import data as shared shared.list_vars.append("001") time.sleep(5.0) shared.print_vars() # It prints: # list_vars = ['001'] # var =
- user2.py
import time import data as shared shared.var = "002" time.sleep(5.0) shared.print_vars() # It prints: # list_vars = [] # var = 002
- main.py
import user1 # It prints: # list_vars = ['001'] # var = import user2 # It prints: # list_vars = ['001'] # var = 002
class Shared(object):
list_vars = []
var = ""
@staticmethod
def print_vars():
print "list_vars = " + str(Shared.list_vars)
print "var = " + Shared.var
# Can be considered as a separate thread running in the background, waiting for messages
@staticmethod
def callback(message):
if message.event == "add":
Shared.list_vars.append(message.data)
elif message.event == "remove" and message.data in Shared.list_vars:
Shared.list_vars.remove(message.data)
import time
import data as shared
shared.list_vars.append("001")
time.sleep(5.0)
shared.print_vars()
# It prints:
# list_vars = ['001']
# var =
import time
import data as shared
shared.var = "002"
time.sleep(5.0)
shared.print_vars()
# It prints:
# list_vars = []
# var = 002
import user1
# It prints:
# list_vars = ['001']
# var =
import user2
# It prints:
# list_vars = ['001']
# var = 002