2017-07-25 17 views
0

IronPythonの循環参照に関する質問があります。クラス階層があるとしましょう。IronPythonと循環参照の継承

from Parent import Parent 

class Child(Parent): 
    def doSomething(self): 
     return 0 

私はここで一種の循環参照があります:私は子クラスを持つ別のファイルでは

from Child import Child 

class Parent(object): 
    def getChild(self): 
     return Child() 

:一つのファイルでは、私は親クラスを持っています。私はエラーが持っている

from Parent import * 

parent = Parent() 
child = parent.getChild() 

:私はこのようなコードを実行しようとするので、 を私は道のいくつかの種類では、この循環参照を避けることはできますか?

+0

これらのクラスは実際に別々のファイルにする必要がありますか? –

+0

はい、ファイル構造を変更できません。実際のところ私の実際の例はちょっと複雑なので、別のファイルに2つのクラスを持つ非常に単純な例でこのエラーを再現しました。私はこの種の問題の解決策を探していますが、まだ結果はありません。どんな助けもありがとう。 – Bill

答えて

0

あなたが言うように、あなたは循環輸入の問題があります。

これを解決する通常の方法は、同じファイルに2つのクラスを設定することです。 Pythonはファイルとクラスの間に何らかのリンクを強制しないので、1つのファイルで好きなだけ多くのクラスを持つことができ、好きなように呼び出すことができます。 (実際には、それが含まれているファイルにクラスとまったく同じ名前を与えることがアン -Pythonicであり、クラスはキャメルケースです一方、離れて何か他のものから、ファイルは、lower_case_with_underscore名を持つ必要があります。)

しかし、何らかの理由であればあなたはそれを行うことはできません、方法の中でそれを行うことによって循環インポートを壊すことができます:

class Parent(object): 
    def getChild(self): 
     from child import Child 
     return Child()