我想了解一個觀察。 我有一個應用程序,加載用戶以後可以使用的各種類型的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