我想了解一个观察。 我有一个应用程序,加载用户以后可以使用的各种类型的Canvas
类。这些类位于几个文件中。例如, 。为什么复制的对象与以前在Python中复制的对象具有相同的ID?
canvas/
bw.py
colored.py
oil.py
我导入,实例化和复制这些对象是这样的:
canvas_files = os.listdir('images')
imported_canvs = []
for canv in canvas_files:
canv = __import__(canv.split('.')[0], fromlist=['Canvas'])
try:
new_canv = canv.Canvas()
new_canv_copy = copy.copy(new_canv)
imported_canvs.append(new_canv_copy)
except AttributeError as ex:
pass
之后,用户从imported_canvs
列表中的每个Canvas
对象的工作。但是,当我导入并实例化这些对象两次(再次运行for
循环)时,我可以看到id(new_canv_copy)
与以前导入和实例化的相同。 这不会是一个问题,除非每个Canvas
的设置对于每个实例都应该是唯一的,并且目前没有发生。每当用户在一个Canvas
中更改设置时,它们会在复制的设备中自动更改。
为什么会发生这种情况,我做错了什么?
您能否提供一个独立的示例来显示重复的对象? – BrenBarn
我只是想知道我的逻辑是否正确。 – minerals