Milyen objektummásolási módszereket ismer?
sobes.tech MI
Válasz az MI-től
Felületi és mély másolat.
A felületi másolat (Shallow Copy) egy új objektumot hoz létre, de a beágyazott objektumokra mutató hivatkozások ugyanazok maradnak. Az eredeti objektum beágyazott objektumaiban végzett módosítások a másolaton is megjelennek, és fordítva.
A mély másolat (Deep Copy) teljesen független másolatot készít az objektumról, beleértve az összes beágyazott objektum másolatát is. Az eredeti beágyazott objektumain végzett módosítások nem befolyásolják a másolatot.
Python példák:
# Felületi másolat
import copy
original_list = [1, 2, [3, 4]]
shallow_copy_list = copy.copy(original_list)
# Az eredeti beágyazott objektumának módosítása hatással van a másolatra
original_list[2][0] = 99
# A shallow_copy_list most [1, 2, [99, 4]]
# Mély másolat
import copy
original_list = [1, 2, [3, 4]]
deep_copy_list = copy.deepcopy(original_list)
# Az eredeti beágyazott objektumának módosítása nem befolyásolja a másolatot
original_list[2][0] = 99
# A deep_copy_list továbbra is [1, 2, [3, 4]]
A módszer kiválasztása az objektum szerkezetétől és a feladattól függ. Egyszerű objektumok esetén, amelyek nem tartalmaznak beágyazott hivatkozásokat, elegendő a felületi másolat. Bonyolultabb szerkezetű vagy teljes függetlenséget igénylő másolatok esetén a mély másolat használata ajánlott.