2017-06-15 4 views
1

私はクラス変数は変更可能ですか?

class someClass(): 
    var = 1 

x = someClass() 
someClass.var = 2 

単純なクラスを定義する場合、これはこれは、このように似通常 何かためであると混乱しているx.var等しい2を行います:

a = 1 
b = a 
a = 2 

b==1としてそのままbのままにします。では、なぜこれはクラス変数と同じではありませんか?違いはどこですか?すべてのクラス変数を呼び出すことはできますか? ある意味では、クラス変数はa=[1]にリストを代入してa[0]=2を割り当てるのと同じように機能します。

x.varは、何か別のものでなければならないという問題があります.2つの変数がPythonで等しく設定されている場合に使用されます。何が起こっている?

+2

が 'x.var = 3'に設定され、' someClass.var'に何が起こるかを見てください –

+0

私は知っていますが、それはポイントではありません – pindakaas

+1

いいえ、それは*ポイントです。基本的に、あなたが 'SomeClass.var'と' someInstance.var'を実行するとき**は必ずしも同じものではありません**。 –

答えて

1

varは、someClassという静的なクラス変数です。

あなたがx.vary.varまたはsome_other_instance.var、あなたが同じ変数にアクセスしている得るために手を差し伸べる、ないインスタンス由来する1つは、(限り、あなたは、具体的プロパティとしてインスタンスに割り当てられていなかったとして)。

+1

私はx.var = 2を使用すると、基本的に、このインスタンスのsomeClassの変数をシャドウするxの新しい変数を作成しますか? – pindakaas

+0

@pindakaasビンゴ! – deceze

+0

@ピーナッツバターアップ。 – Uriel

関連する問題