2017-08-03 41 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值的方法。

没有看到您的实际用例,我无法提供任何其他方法来实现您想要的内容,但是您确实不应该使其成为全局的,以便从其他文件进行访问。

相关问题