Pythonでは、クラスを2回インスタンス化し、2つの異なる変数に格納します。 2番目のオブジェクトに最初のオブジェクトのコピーが含まれているのはなぜですか?私は1つのオブジェクトの値を変更し、他のオブジェクトを変更しないので、コピーであることがわかります。例:私は、その後の値でdataPointsのをクラスをインスタンス化し、埋めるインスタンス化クラスは参照を保持します
class HistoricalData:
dataPoints = {}
::私は再度クラスをインスタンス化し、再び値でそれを埋める
hd1 = HistoricalData()
hd1.dataPoints["channel1"] = 1
hd1.dataPoints["channel2"] = 2
hd1.dataPoints["channel3"] = 3
私は、次のクラスを持っている
:
hd2 = HistoricalData()
hd2.dataPoints["channel1"] = 10
hd1.dataPointsおよびhd2.dataPointsの値を出力すると、ら次のチャンネル1の値が第二ではないに変更されたため
{'channel1': 1, 'channel2': 2, 'channel3': 3}
{'channel1': 10, 'channel2': 2, 'channel3': 3}
辞書は、第二のオブジェクトの最初のコピーを有しています。
クラスをインスタンス化すると、すべての値がクラスで定義された値にデフォルト設定されると考えました。何か不足していますか?
あなたはどこかでミスを犯しました。 Johhnywebの答えは正しい限りですが、上のコードを実行すると、両方のインスタンスの 'dataPoints'の値が' 10'に変更されていることがわかります。辞書は1つしかありません。 「1つのオブジェクトの値を変更して、それを変更しないため、コピーであることはわかっています」 - まあ、そうではありません。 – agf