次の例の違いはわかりません。あるクラスのインスタンスが別のインスタンスのクラス変数を変更することができ、もう一度それができない場合は、クラス変数: "クラスリスト" vs "クラスブール値"
例1:
class MyClass(object):
mylist = []
def add(self):
self.mylist.append(1)
x = MyClass()
y = MyClass()
x.add()
print "x's mylist: ",x.mylist
print "y's mylist: ",y.mylist
出力:
Xのマイリスト:[1]
Yのマイリスト:[1]
ので、ここでのインスタンスx
クラスA
は、クラス属性にアクセスして変更することができましたe mylist
もy
のインスタンスの属性であるA
です。
例2:
class MyBank(object):
crisis = False
def bankrupt(self) :
self.crisis = True
bankX = MyBank()
bankY = MyBank()
bankX.bankrupt()
print "bankX's crisis: ",bankX.crisis
print "bankY's crisis: ",bankY.crisis
bankXの危機:真
bankYの危機:偽
なぜこれがこの例では動作しませんか? Addメソッドには割り当てがない最初のケースで
:
はスニペット(それはもっと自分の問題を説明するかもしれない)、次の点を考慮しますそのように働く)、それはクラスに関係するだけで5つのアップボントを取得しますか?おめでとう、私はSOコミュニティのすべての信念を失ったばかりです。 –
myListはクラス変数であり、変更可能です – FujiApple
ほぼ同じ例を持つ[python documentation](https://docs.python.org/3.5/tutorial/classes.html#class-and-instance-variables)を参照してください。 –