0

Pythonスクリプトの最後でIPythonが呼び出されたときに、スコープ変数に問題が発生しました。スクリプト自体で呼び出すすべての関数は、変数を変更できます。変数は、後で他の関数によって使用されます。ipythonで同じ関数を呼び出すと、スクリプト化された関数は変更された変数にアクセスできますが、ipythonが呼び出されたときに存在していた変数は変更されません。したがって、私の質問:グローバル変数をipythonに伝播するにはどうすればよいですか?(もちろん、A = globals()['A']のようなこともできますが、それは醜いです)

4

1 に答える 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 に答える