如何重构这个以避免循环依赖?

时间:2016-08-18 14:21:03

标签: python

我有以下设置:

# generator.py
from node import Node

class Generator(object):
  @staticmethod
  def generate(self, node):
     return [Node(), Node(), Node()]

# node.py
from generator import Generator

class Node(object):
   def generate_child_nodes(self):
     self.child_nodes = Generator.generate(self)

这种过度简化的设置导致循环依赖性问题。

我通常希望类能够使用不同的模块(在本例中为generator.py)创建自身的实例(例如,用于模仿父子关系)。

2 个答案:

答案 0 :(得分:0)

像这样:

# generator.py

class Generator(object):
  @staticmethod
  def generate(self, node):
     from node import Node
     return [Node(), Node(), Node()]

# node.py
from generator import Generator

class Node(object):
   def generate_child_nodes(self):
     self.child_nodes = Generator.generate(self)

答案 1 :(得分:0)

generator.py

def generate(n):
    for a in range(3):
        yield n()

node.py

from generator import generate
class Node:
    def __init__(self):
        self.id_ = id(self)
for n in generate(Node):
    print(n.id_)