2017-02-26 49 views
-2

我目前正在研究一個項目,我需要從幾個文件導入幾個類到__main__.py。但是這些類需要相互交互(例如,文件1中的類A可能需要從文件2中檢查類B中的變量)。我試過這樣做:通過導入的類訪問類

class A(object) 
    (code here) 
    if B.var == 1: 
    pass 

但是這會導致錯誤(B未定義)。有沒有人知道這個解決方案?

回答

0

首先,您需要用完全限定名稱撥打B。如果你做import packagepackage有一個類B在裏面,那麼你必須檢查package.B.var == 1。你也可以做from package import B,在這種情況下,你可以做B.var == 1

其次,如果var是屬性而不是靜態類變量,則需要創建一個對象。把它們放在一起,你會得到如下結果:

import package 
b_instance = package.B() 
print(b_instance.var) 
+0

我知道有可能將b類導入到類a中,但是在主程序中經常會修改問題變量。如果我導入B並創建另一個B實例,var將被設置爲B中指定的默認值(並且不會受到主程序影響) – SomeRandomGuy

+0

然後,您需要確保您的主程序具有相同的「B」實例。 – danielunderwood

+0

有沒有辦法做到這一點?在主文件和A類文件中都有相同的B實例,這樣當你編輯一個文件時,它會自動在另一個文件中編輯? – SomeRandomGuy