如何解决 Python 中的这种循环依赖

Mav*_*ick 0 python circular-dependency circular-reference cyclic-reference

我遇到了如下所示的一些情况,其中每个类都需要另一个类,并且它创建了循环依赖。我在使用 ctypes 包装一些 c 代码时遇到了这种类型的情况。已经有很多关于这个主题的帖子,但我觉得它们没有帮助,我需要一些例子。有关解决此问题的任何想法/示例都会有所帮助。

# Module A
from B import C2

class C1(object):
    def __init__(self):
        self.name = "C1"
        self.c2 = C2()


# Module B
from A import C1

class C2(object):
    def __init__(self):
        self.name = "C2"
        self.c1 = C1()

# Main
from A import C1

if __name__ == "__main__":
    o = C1()
    print o.name
Run Code Online (Sandbox Code Playgroud)

Sve*_*ach 5

解决方案(假设无限递归已解决):

  1. 避免这种循环依赖。

  2. 将相互依赖的组件放到同一个模块中。

  3. 使用import Aandimport B代替from ...表格。(如果涉及包,这在某些情况下可能会失败。)

  4. 使用函数级导入。