2016-08-03 119 views
0

我在同一個目錄中有2個Python文件。 one.py和two.py分別包含第一個和第二個類。 我想要導入類並相互繼承並使用彼此定義的方法python類互相繼承

one.py

from two import Second 
class First(Second): 
    def first(self): 
     print "first" 

two.py

from one import First 
class Second(First): 
    def second(self): 
     print "second" 

在編譯時我收到以下錯誤。有什麼辦法可以解決這個問題嗎?請建議替代方法。

Traceback (most recent call last): 
    File "C:\Users\uvijayac\Desktop\New folder\two.py", line 1, in <module> 
    from one import First 
    File "C:\Users\uvijayac\Desktop\New folder\one.py", line 1, in <module> 
    from two import Second 
    File "C:\Users\uvijayac\Desktop\New folder\two.py", line 1, in <module> 
    from one import First 
ImportError: cannot import name First 
+0

繼承意味着是自頂向下的層次結構,而不是矩陣。你應該重新考慮你的設計。 – cdarke

+0

如果我的子類需要使用父類中的方法,該怎麼辦。 –

+0

這很好,這是違反規則的另一個方向(父母使用孩子的方法)。 – cdarke

回答

1

您遇到的實際問題是您正在嘗試執行循環導入,這與循環繼承無關。 (關於如何避免這種情況,有很多關於SO的材料。)

但是,請注意,循環繼承也是不可能的,因爲一個類只有在定義了子類時纔可用,並且其定義包括從另一個子類化類,因此也需要定義,這需要......你明白了 - 你不能有循環繼承。