python - 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
这对我来说是个大问题。如何创建具有不同属性的此类的两个对象?
解决方案
因为如果我正确理解了您想要的内容,您需要您的对象具有不一定包含相同键的空字典,因此我会将空字典定义为下面的实例属性,__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}
推荐阅读
- python - 我们可以使用梯度下降逻辑回归进行多项分类吗?
- reactjs - razzle SSR 渲染反应,不从初始安装说明运行
- python - 如何在没有 sys.path 的情况下从父目录导入模块?
- mongodb - 如何从 mongodb asp.net 核心的操作过滤器中设置动态连接字符串
- cmake - 以选项为参数的 IF 生成器表达式
- javascript - 如何在函数中返回一个函数并在返回时显示它
- c++ - 如何使用 Visual Studio 为可执行文件设置默认语言属性?
- sorting - 鸡尾酒排序使用多少比较?
- css - Rails 5.2 背景图像未出现(使用 ERB 到 URL)
- c# - 如何将可变长度的模型列表传递给方法