2017-08-03 69 views
1

文件1如何將一個類中的變量從一個文件導入到另一個文件中?

#file1 
from tkinter import * 

class UI: 
    def __init__(self): 
     self.main_window = Tk() 
     sam = 'TestWord' 
     import file2 

    def run(self): 
     self.main_window.mainloop()  

def main(): 
    ui = UI() 
    ui.run() 

main() 

文件2

#file2 
from file1 import sam 
print(sam) 

輸出

from file1 import sam 
builtins.ImportError: cannot import name 'sam' 

如何導入SAM當它是一類?我知道如何在沒有班級的情況下做到這一點。此外,這段代碼打開了兩個必須成爲問題一部分的GUI,但我完全失去了這一點。兩個變量都必須是self.sam?所以,self.sam ='TestWord'並導入self.sam。我已經嘗試過,但沒有成功,但是,我可能在這裏錯過了一個細節。任何幫助將不勝感激。

回答

0

問題是import file2不會爲您運行代碼。它只發生在python REPL上。

你可以做類似下面,

文件1:

from tkinter import * 

class UI: 
    def __init__(self): 
     self.main_window = Tk() 
     sam = 'TestWord' 
     from file2 import foo 
     foo(sam) 

    def run(self): 
     self.main_window.mainloop()  

def main(): 
    ui = UI() 
    ui.run() 

main() 

文件2:

def foo(sam): 
    print(sam) 
0

所以,當你輸入你的file1 main()不運行,只當您運行file1時使用

if __name__ == '__main__': 
    main() 

另外,你不能訪問sam類裏面,這不是文件在這種情況下的問題,從類外部訪問它,你要麼需要,使其全球性的,或者使用self.sam = ...並有一個實例你的班級。

更好的辦法是讓file2包含使用您導入到file1中的sam值的方法。

沒有看到您的實際用例,我無法提供任何其他方法來實現您想要的內容,但是您確實不應該使其成爲全局的,以便從其他文件進行訪問。

相關問題