2017-08-03 3 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) 

それはクラスのときに、私は、SAMをインポートすることができますどのように出力

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

?私は、クラスが存在しなければこれを行う方法を知っています。また、このコードは2つのGUIを開きますが、これは問題の一部でなければなりませんが、私はこの時点で完全に失われています。両方の変数をself.samにする必要がありますか?だから、self.sam = 'TestWord'とimport self.sam。私はこれを試して、それは動作しませんでしたが、私はここで詳細が不足している可能性があります。どんな助けもありがとう。

答えて

0

問題はimport file2はあなたのためのコードを実行しません。これはPython REPLでのみ発生します。

あなたは以下のような何かを行うことができ、

はFile1:

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() 

File2の:あなたはFILE1をインポートするとき

def foo(sam): 
    print(sam) 
0

だからあなたmain()だけで、実行されません。 file1を実行すると、

if __name__ == '__main__': 
    main() 

また、あなたはクラスの外からアクセスするために、これはこの場合のファイルの問題ではなく、クラス内samにアクセスすることはできませんあなたのいずれか、それはグローバルに、またはself.sam = ...を使用して、インスタンスを持っている必要がありますあなたのクラスの。

file2には、ファイルにインポートする値を使用するメソッドが含まれています。

実際の使用例を見ることなく、私はあなたが望むものを達成するための他の方法を提供することはできませんが、別のファイルからアクセスするためにグローバルにするべきではありません。

関連する問題