Pythonスクリプトの最後でIPythonが呼び出されたときに、スコープ変数に問題が発生しました。スクリプト自体で呼び出すすべての関数は、変数を変更できます。変数は、後で他の関数によって使用されます。ipythonで同じ関数を呼び出すと、スクリプト化された関数は変更された変数にアクセスできますが、ipythonが呼び出されたときに存在していた変数は変更されません。したがって、私の質問:グローバル変数をipythonに伝播するにはどうすればよいですか?(もちろん、A = globals()['A']のようなこともできますが、それは醜いです)
1 に答える
0
@staticmethodそのクラスのシングルトンインスタンスを返す静的メソッド(デコレータ:)を使用してクラスを作成できます。そのオブジェクトには、グローバルとして機能する任意の数のメンバーを含めることができます。
class Globals:
__master = None
somevar = 1
othervar = 2
@staticmethod
def get_master():
if Globals.__master is None:
Globals.__master = Globals()
return Globals.__master
g1 = Globals.get_master()
g2 = Globals.get_master()
g1.somevar += 1
print g1.somevar
print g2.somevar
プリント:
2
2
于 2010-06-30T02:09:15.377 に答える