2009-05-25 67 views
3

FILE:b.py爲什麼不允許這樣的導入?

class B: 
    def __init__(self): 
     print "B" 

import a 

a = A() 

FILE:a.py

class A(B):    ###=> B is not defined 
    def __init__(self): 
     print "A" 

當我嘗試執行b.py,它說,B沒有定義。我誤解「進口」嗎?

如果您能指出問題,非常感謝。

回答

5

最接近工作的事情對你的代碼是:

==== FILE: b.py ==== 

class B: 
    def __init__(self): 
     print "B" 

import a 

if __name__ == "__main__": 
    a = a.A() 

==== FILE: a.py ==== 
import b 

class A(b.B):    ###=> B is not defined 
    def __init__(self): 
     print "A" 

注意區別:

  • 文件(模塊)的命名空間,如果你輸入「A」,你是指它的類A爲「aA」。

  • 如果你想使用它,你需要在a.py中導入b。

你想要避免讓兩個模塊需要包括對方,把所有東西放在同一個模塊中,或者把它們分成更多的模塊。另外,最好將所有導入都放在文件的頭部,這使得這種操作變得不可能。

5

因爲python在它自己​​的文件中初始化類A。它不像C或PHP,其中每個導入的模塊基本上都粘貼到原始文件中。

您應該將類​​B放在與類A相同的文件中以解決此問題。或者你可以把class B放在c.py中,並用「from c import B」導入它。

+0

礦石使用該類的完整導入名稱:a = a.A() – reto 2009-05-25 10:14:14

相關問題