在Python中,我实例化一个类两次,并将它们存储到两个不同的变量中。为什么第二个对象包含第一个对象的副本?我知道这是一个拷贝,因为我改变了一个对象中的值,而另一个对象却没有改变。示例:
我有以下课程:
class HistoricalData:
dataPoints = {}
然后实例化类并用值填充数据点:
^{pr2}$然后我再次实例化该类并再次用值填充它:
hd2 = HistoricalData()
hd2.dataPoints["channel1"] = 10
当我打印hd1.dataPoints和hd2.dataPoints的值时,我得到以下结果:
{'channel1': 1, 'channel2': 2, 'channel3': 3}
{'channel1': 10, 'channel2': 2, 'channel3': 3}
字典在第二个对象中有第一个的副本,因为channel1中的值在第二个对象中发生了更改,而不是第一个对象。在
我想当你实例化一个类时,所有的值都将默认为类中定义的值。我错过什么了吗?在
您声明了^{} variable ,而不是instance variable。在
类变量在
class
的所有实例中共享。这意味着当您更新一个HistoricalData
object
时,您将全部更新。在实例变量是} 特殊方法中初始化,该方法在创建每个实例时调用。在
class
的每个实例的本地变量。它们通常在^{{cd7>你可能希望得到这样的结果:
相关问题 更多 >
编程相关推荐