首先,我想确保我理解功能的分配正确。分配的本地代理功能是通过线程内的模块(包)共享变量(对象)。我是对的吗?
第二,我的用法仍然不清楚,可能是因为我误解了一项任务。我用Flask。如果我有两个(或更多)模块:A,B。我想将模块A中的对象C导入模块B.但我不能以通常的方式from A import C
执行,因为它会导致循环导入,然后是ImportError。如何使用Werkzeug本地代理解决此问题?我应该和Werkzeug一起做吗?
模块A:
from werkzeug.local import LocalSomething # LocalProxy or LocalStack
C = 'C'
# Somehow add C to LocalSomething
模块B:
from werkzeug.locla import LocalSomething
C = LocalSomething()['C']
答案 0 :(得分:6)
模块Z:
from werkzeug.local import Local
myLocals = Local()
模块A:
from Z import myLocals
myLocals.C = "C"
模块B:
from Z import myLocals
C = getattr(myLocals, "C", None)
这是你要找的吗?