2017-12-04 8 views
0

リファレンスをインポートした最初のファイルがPythonによって解析された後にその値が更新され、オブジェクトにrefenceをインポートしたいと思います。例えば:Python import updated updated reference

runner.py

from store import modify_var 
from importer import a_function 

print('>>runner') 
modify_var() 
a_function() 

store.py

my_var = None 

def modify_var(): 
    global my_var 
    my_obj = MyObj() 
    my_var = my_obj 
    print('>>store, my_var has been set to: {0}'.format(my_var)) 

class MyObj(object): 
    x = 2 

importer.py

from store import my_var 

print('>>importer, my_var outside function (before has been set): {0}'.format(my_var)) 

def a_function(): 
    print('>>importer, my_var after is has been set: {0}'.format(my_var)) 

コンソール出力runner.py

>>importer, my_var outside function (before has been set): None 
>>runner 
>>store, my_var has been set to: <tests.store.MyObj object at 0x7fbfc683a1d0> 
>>importer, my_var after is has been set: None 
01を実行した後

my_varをどのようにインポートできるかを調べようとしていますが、関数内で値を呼び出すときにNoneではないようにしています。

+1

引数を受け入れるために 'a_function'を定義できますか?呼び出されたときに更新された*変数を渡すだけですか?あなたの関数のどれも何も返さないかもしれないかもしれません。 – wwii

答えて

0

私は、store.pyで値を与えた後にmy_varを宣言しているのは気に入らないと思います。次のいずれかを試してみてください。

store.pyの内部では、どれもMY_VAR戻ります別の方法を行います。

def my_var_none(): 
    my_var = None 
    return my_var 

その後、そのままrunner.pyを残し、そしてimporter.py内側:

from store.py import my_var_none() 
関連する問題