0
私は次のセットアップを持っている:循環依存を避けるためにこれをどのようにリファクタリングするのですか?
# 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)を使用して、クラスのインスタンスを作成する(親子関係を模倣するなど)必要があります。このよう
移動機能への輸入の一つ、またはクラス定義の後に。 – davidism
醜い速い方法は、インポートの1つを(クラスまたはメソッド内の)ローカルインポートとして持つことです。 – DeepSpace
代替アプローチ:すでに渡されたノードインスタンスに基づいて、それぞれのノードクラスを動的に 'generate()'インスタンス化しますか?例えば。 'return [node .__ class __()、node .__ class __()、node .__ class __()]' –