Ποιες μεθόδους αντιγραφής αντικειμένων γνωρίζετε;
sobes.tech AI
Απάντηση από AI
Επιφανειακό και βαθύ αντίγραφο.
Το επιφανειακό αντίγραφο (Shallow Copy) δημιουργεί ένα νέο αντικείμενο, αλλά οι αναφορές στα εσωτερικά αντικείμενα παραμένουν ίδιες. Οι αλλαγές στα εσωτερικά αντικείμενα του αρχικού αντικειμένου θα αντικατοπτρίζονται και στο αντίγραφο, και το αντίστροφο.
Το βαθύ αντίγραφο (Deep Copy) δημιουργεί ένα πλήρως ανεξάρτητο αντίγραφο του αντικειμένου, συμπεριλαμβανομένου όλων των εσωτερικών αντικειμένων. Οι αλλαγές στα εσωτερικά αντικείμενα του αρχικού δεν επηρεάζουν το αντίγραφο.
Παραδείγματα υλοποίησης (Python):
# Επιφανειακό αντίγραφο
import copy
original_list = [1, 2, [3, 4]]
shallow_copy_list = copy.copy(original_list)
# Αλλαγή σε εσωτερικό αντικείμενο του αρχικού επηρεάζει το αντίγραφο
original_list[2][0] = 99
# Το shallow_copy_list τώρα είναι [1, 2, [99, 4]]
# Βαθύ αντίγραφο
import copy
original_list = [1, 2, [3, 4]]
deep_copy_list = copy.deepcopy(original_list)
# Αλλαγή σε εσωτερικό αντικείμενο του αρχικού δεν επηρεάζει το αντίγραφο
original_list[2][0] = 99
# Το deep_copy_list παραμένει [1, 2, [3, 4]]
Η επιλογή της μεθόδου εξαρτάται από τη δομή του αντικειμένου και την εργασία. Για απλά αντικείμενα χωρίς εσωτερικές αναφορές, αρκεί το επιφανειακό αντίγραφο. Για πολύπλοκα αντικείμενα ή όταν απαιτείται πλήρης ανεξαρτησία του αντιγράφου από το αρχικό, χρησιμοποιείται το βαθύ αντίγραφο.