【发布时间】:2014-12-04 08:15:14
【问题描述】:
我对 Python 还是很陌生,我找不到一种方法让静态变量在不同的 Python 文件之间共享......在 Java 中,这样做似乎很简单......这就是我的我正在尝试做:
data.py
class Shared(object):
list_vars = []
var = ""
@staticmethod
def print_vars():
print "list_vars = " + str(Shared.list_vars)
print "var = " + Shared.var
user1.py
import time
from data import Shared
Shared.list_vars.append("001")
time.sleep(5.0)
Shared.print_vars()
# It prints:
# list_vars = ['001']
# var =
user2.py
import time
from data import Shared
Shared.var = "002"
time.sleep(5.0)
Shared.print_vars()
# It prints:
# list_vars = []
# var = 002
对不起,这可能不是最好的例子,但它抓住了这个想法......我的问题是,如果我想拥有:
list_vars = ['001']
var = 002
在运行 user1.py 和 user2.py 之后,在其中一个/甚至其他一些 python 文件或类中(我正在考虑 user1.py 和 user2.py 作为同一个软件包中的两个子程序,通常是同时运行),这样做的“Python方式”是什么?
非常感谢!
================================
问题更新:
为了更具体地说明问题,请允许我这样描述问题:
data.py
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)
有两个额外的文件,user1.py和user2.py,它们的内容可以忽略暂时……
假设 user1.py 和 user2.py 几乎同时运行,说时间 = 0。
在时间 = 1 时,有一条消息进来(带有 message.event = "add" 和 message.data = "001"),回调函数在 data.py 被触发,"001" 被添加到变量 list_vars 。
在时间 = 2 时,user1.py 更新变量 var data.py 到 "002"。
-
在时间 = 3 时,如果 user2.py 想要访问并打印出 具有最新值的变量 list_vars 和 var:
- list_vars = ["001"]
- var = 002
这在 Python 中如何实现?
非常感谢!
【问题讨论】: