首页 > 解决方案 > python类中的内存分配问题

问题描述

我在脚本中使用的 python 类有一个基本问题,我将尝试在下面的示例中进行描述。基本上,我有一个给定的课程,我们称之为测试:

class test:
    dic={}
    def __init__(self,dic=dic):
        self.dic=dic

我的班级附有一本字典'dic'。有时我需要创建该类的两个对象,然后分别构建自己的字典。但我的问题是,即使这两个对象有不同的内存分配,它们的字典也可以有相同的内存分配:

v1=test()
v2=test()
# v1 and v2 objects have different id
print(id(v1),id(v2))
>> 140413717050928 140413717051040

# However, v1 and v2 properties have the same id
v1.dic['hello']=1
v2.dic['hello']=2
print(id(v1.dic['hello']),id(v2.dic['hello']))
>> 94431202597440 94431202597440

所以我不能分别构建我的两个对象:

print(v1.dic['hello'],v2.dic['hello'])
>> 2 2

这对我来说是个大问题。如何创建具有不同属性的此类的两个对象?

标签: python

解决方案


因为如果我正确理解了您想要的内容,您需要您的对象具有不一定包含相同键的空字典,因此我会将空字典定义为下面的实例属性,__init__()并根据进一步的需要将项目添加到每个对象字典:

class Test:
    def __init__(self):
        self.dic = {}


if __name__ == '__main__':
    d1 = Test()
    d2 = Test()
    d1.dic['Hello'] = 1
    d2.dic['Hello'] = 2
    print(d1.dic)
    print(d2.dic)

输出:

{'Hello': 1}
{'Hello': 2}

推荐阅读