实例化类保留引用

2024-09-29 21:36:13 发布

您现在位置:Python中文网/ 问答频道 /正文

在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中的值在第二个对象中发生了更改,而不是第一个对象。在

我想当你实例化一个类时,所有的值都将默认为类中定义的值。我错过什么了吗?在


Tags: 数据对象实例示例副本class课程拷贝
1条回答
网友
1楼 · 发布于 2024-09-29 21:36:13

您声明了^{} variable,而不是instance variable。在

类变量在class的所有实例中共享。这意味着当您更新一个HistoricalDataobject时,您将全部更新。在

实例变量是class的每个实例的本地变量。它们通常在^{}特殊方法中初始化,该方法在创建每个实例时调用。在

{cd7>你可能希望得到这样的结果:

class HistoricalData(object):

    def __init__(self):
        self.dataPoints = {}

相关问题 更多 >

    热门问题