Sobes.tech
Junior

Jakie metody kopiowania obiektów znasz?

sobes.tech AI

Odpowiedź od AI

Płytka i głęboka kopia.

Płytka kopia (Shallow Copy) tworzy nowy obiekt, ale odwołania do zagnieżdżonych obiektów pozostają takie same. Zmiany w zagnieżdżonych obiektach oryginału będą odzwierciedlone również w kopii i odwrotnie.

Głęboka kopia (Deep Copy) tworzy całkowicie niezależną kopię obiektu, w tym kopię wszystkich zagnieżdżonych obiektów. Zmiany w zagnieżdżonych obiektach oryginału nie wpływają na kopię.

Przykłady implementacji (Python):

# Płytka kopia
import copy

original_list = [1, 2, [3, 4]]
shallow_copy_list = copy.copy(original_list)

# Zmiana zagnieżdżonego obiektu w oryginale wpływa na kopię
original_list[2][0] = 99
# shallow_copy_list teraz [1, 2, [99, 4]]
# Głęboka kopia
import copy

original_list = [1, 2, [3, 4]]
deep_copy_list = copy.deepcopy(original_list)

# Zmiana zagnieżdżonego obiektu w oryginale nie wpływa na kopię
original_list[2][0] = 99
# deep_copy_list nadal [1, 2, [3, 4]]

Wybór metody zależy od struktury obiektu i zadania. Dla prostych obiektów bez zagnieżdżonych odwołań wystarczy płytka kopia. Dla obiektów złożonych lub gdy potrzebna jest pełna niezależność kopii od oryginału, stosuje się głęboką kopię.