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

问题描述 投票:0回答:1

我有两个模块:

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

python callback dependencies
1个回答
0
投票

要以“Pythonic”方式执行此操作,您应该引入一个Observer模式,一旦计算出一个事件就发出一个事件,b应该订阅一个以便在完成后调用。

在这里你有一个observer example

© www.soinside.com 2019 - 2024. All rights reserved.