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沒有定義。我誤解「進口」嗎?
如果您能指出問題,非常感謝。
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沒有定義。我誤解「進口」嗎?
如果您能指出問題,非常感謝。
最接近工作的事情對你的代碼是:
==== 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。
你想要避免讓兩個模塊需要包括對方,把所有東西放在同一個模塊中,或者把它們分成更多的模塊。另外,最好將所有導入都放在文件的頭部,這使得這種操作變得不可能。
因爲python在它自己的文件中初始化類A。它不像C或PHP,其中每個導入的模塊基本上都粘貼到原始文件中。
您應該將類B放在與類A相同的文件中以解決此問題。或者你可以把class B放在c.py中,並用「from c import B」導入它。
礦石使用該類的完整導入名稱:a = a.A() – reto 2009-05-25 10:14:14