次のように、クラス内からグローバル変数を宣言しようとしています。
class myclass:
global myvar = 'something'
クラスの外からアクセスする必要がありますが、クラスファイルの外で宣言する必要はありません。私の質問は、これは可能ですか? もしそうなら、構文は何ですか?
あなたの質問では、「メインファイルの外」を指定しています。「クラス外」という意味ではない場合、これはモジュールレベルの変数を定義するために機能します。
myvar = 'something'
class myclass:
pass
次に、クラスと変数の定義が というモジュールにあると仮定して、実行できますmymodule
。
import mymodule
myinstance = myclass()
print mymodule.myvar
また、@ phihag の回答に対するコメントに応じて、次のように修飾されていない myvar にアクセスできます。
from mymodule import myvar
print myvar
クラスで定義しながら、別のファイルから簡単にアクセスしたい場合:
class myclass:
myvar = 'something'
次に、アクセスする必要があるファイルで、ローカル名前空間に参照を割り当てます。
myvar = myclass.myvar
print myvar
あなたは好きにすることができます
# I don't like this hackish way :-S
# Want to declare hackish_global_var = 'something' as global
global_var = globals()
global_var['hackish_global_var'] = 'something'
これが本当に必要かどうかを再考する必要があります。プログラムを構成する方法が奇妙に思えます。より正しい phihag の方法を使用する必要があります。
それでもこれをやりたい場合は、次の方法があります。
>>> class myclass(object):
... global myvar
... myvar = 'something'
...
>>> myvar
'something'
クラスにプロパティを割り当てるだけです。
class myclass(object):
myvar = 'something'
# alternatively
myclass.myvar = 'else'
# somewhere else ...
print(myclass.myvar)
あなたの質問に答えるために
global s
s = 5
やります。ただし、クラスのどこでこれを行うかによって、問題が発生します。必要な動作を得るために、関数から離れてください。