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ę.