如何避免 GUI 和程序其余部分之间的循环依赖?

How to avoid a circular dependency between a GUI and the rest of a program?

我有两个类。一个是带有程序的 GUI,另一个实际上控制程序发生的所有底层操作。

class A(object): #GUI
    def __init__(self, inst):
        self.program = inst

    def foo(self):
        #Access B.a and B.b down here somewhere      

class B(object):
    a = []
    b = []
    def __init__(self):
        self.GUI = A(self)

    def bar(self):
        self.GUI.foo()

这两个 类 之间存在非常明显的循环依赖关系,但我不是 100% 确定修复它的好方法。

编辑:程序需要来自 GUI 的输入才能正常运行

我没有看到循环依赖。只有 foo 曾经调用 self.inst.bar.

才会发生这种情况

使用上面的代码片段完成以下运行:

b = B()
b.bar()

所以如果不是'recursive',那么'circular'在这种情况下是什么意思? A 引用 B 和 B 也引用 A 并没有太大问题。但是您确实希望针对它们的交互方式制定策略。也许阅读一下 MVC:

https://www.tutorialspoint.com/design_pattern/mvc_pattern.htm