2013-06-05 90 views
4

我在一個文件中有一個父類,在另一個文件中有一個子類,我試圖在第三個類中使用它們。的排序是這樣的:Python:從不同模塊導入父類和子類

test1.py

class Parent(object): 
    def spam(self): 
     print "something" 

test2.py

class Child(Parent): 
    def eggs(self): 
     print "something else" 

test3.py

from test1 import * 
from test2 import * 
test = Child() 

運行test3.py給了我以下內容:

File "[path]\test2.py", line 1, in <module> 
class Child(Parent): 
NameError: name 'Parent' is not defined 

我是否需要將我的父母和子女班全都放在同一個地方?

+0

這是衆多原因,從'富進口*'是壞的。它使得這種混淆更容易陷入困境,而且更難以通過。如果你剛剛做了'import test1',答案會很明顯:​​你需要'class Child(test1.Parent)',因此你需要'import test1'。通過這樣做,答案很難解釋 - 您需要了解每個模塊全局變量的工作方式,以及「導入」如何工作,然後才顯而易見。 – abarnert

回答

6

您需要導入Parent模型test2.py以及

from test1 import Parent 

class Child(Parent): 
    def eggs(self): 
     print "something else" 
+0

謝謝,karthikr,工作。我認爲這是一個簡單的解決方案,我完全無知。 – user2452571

+0

@karthikr,如果一個模塊導入與另一個導入模塊相同的模塊,這是個問題嗎?例如,假設'B'輸入'A'和'C'輸入'A'和'B'。這是一個問題嗎? – gwg

+0

嗯,這取決於,但大多數情況下,如果A已經在上下文中,那麼python足夠聰明,不會再導入它。但是,進口順序確實很重要。 – karthikr