Sobes.tech
Junior

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.