2017-07-25 62 views
0

我有一個關於IronPython中的循環引用的問題。假設我有類層次結構。在一個文件中我有父類:IronPython中的繼承和循環引用

from Child import Child 

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

在另一個文件中我有子類:

from Parent import Parent 

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

我有一種循環引用在這裏。所以,當我嘗試這樣執行代碼:

from Parent import * 

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

我得到了一個錯誤: 能否避免某種方式循環引用?

+0

實際上你是否需要將這些類放在不同的文件中? –

+0

是的,我無法修改文件結構。其實我真正的例子有點複雜,我在一個非常簡單的例子中用兩個類在單獨的文件中重現了這個錯誤。我正在尋找這種問題的任何解決方案,但我還沒有結果。任何幫助,將不勝感激。 – Bill

回答

0

正如你所說,你有一個循環導入問題。

解決這個問題的正常方法是簡單地將兩個類放在同一個文件中。 Python不會強制在文件和類之間建立任何鏈接,因此您可以在單個文件中擁有儘可能多的類,並且可以隨意調用它們。 (事實上​​,給文件完全相同的名稱,因爲它包含的類是 -Pythonic;二話不說,文件應該有lower_case_with_underscore名稱,而類是駝峯)

但是,如果由於某種原因你不能這樣做,你可以通過在方法內部打破循環導入:

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