使用回调满足依赖性的缺点是什么?而且,这是反模式吗?

时间:2019-03-08 23:10:05

标签: python callback dependencies

我有两个模块:

#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方式?

1 个答案:

答案 0 :(得分:1)

要以“ Pythonic”方式执行此操作,您应该引入观察者模式,该模式一旦计算出a便会发出事件,并且b应当订阅a以便在a完成后被调用。

这里有一个observer example