我有两个模块:
#module_a
def make_a(cb = None):
global a
a = 1 # It takes a very long time to make "a", so it is stored as a global in module_a.
if cb != None:
cb()
和,
#module_b
import module_a
def make_b():
global b
#In order to make "b", we need module_a.a, however there is no guarantee it has been made.
if 'a' not in dir(module_a):
module_a.make_a(make_b)
return
else:
b = module_a.a + 1
make_b()
print(b) # 2
在上面的代码中,make_b
中的函数module_b
创建了一个名为b
的东西,它取决于a
中名为module_a
的东西。为了满足它的依赖性,它调用make_a
回调make_b
。一旦a
制成,然后再次调用make_b
并制作b
。
这种模式对我来说很有意义,但我想知道这是否是一种普遍接受的做法,或者它是否是一种反模式。
是否有更规范的方法来满足Python中的这种依赖,即Pythonic方式?
要以“Pythonic”方式执行此操作,您应该引入一个Observer模式,一旦计算出一个事件就发出一个事件,b应该订阅一个以便在完成后调用。
在这里你有一个observer example