私はここで何が起こっているか理解できないようです。不可解な範囲の行動
class testclass:
def __init__(self):
print "new instance"
myList=[]
if __name__ == "__main__":
inst1=testclass()
inst1.myList.append("wrong")
inst2=testclass()
inst2.myList.append("behaviour")
print "I get the",inst2.myList
出力は次のとおりです。
new instance
new instance
I get the ['wrong', 'behaviour']
私はINST1内のリストには何も知らないことを期待しているだろうinst2のリストについては、どういうわけかmyListのスコープのように見えますが、クラスのインスタンス化をtrascendsします。 私はこれが非常に不安定で困惑していると思いますが、ここで何か不足していますか?
ありがとうございます!
オブジェクトの割り当てが完了するまでのみ共有されます。 – Marcin
あなたのご意見が分かりません。クラス変数は常にすべてのインスタンスで共有されていませんか? myListがクラス変数とインスタンス変数の両方として定義されていても、それらは依然として別個であり、一方の割り当ては他方には影響しません。何か不足していますか? – Pierce
それは私の要点です。インスタンスの変数に代入すると、そのインスタンスを使用してクラス変数にアクセスすることはできなくなります(インスタンス変数を削除しない限り)。 – Marcin