Junior
Ի՞նչ մեթոդներ եք ճանաչում օբյեկտների պատճենահանման համար։
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]]
Ընտրությունը կախված է օբյեկտի կառուցվածքից և առաջադրանքից։ Պարզ օբյեկտների համար, որոնք չունեն ներսի հղումներ, բավարար է ապակետային պատճենը։ Մարդկային բարդ օբյեկտների կամ երբ անհրաժեշտ է լիարժեք անկախություն պատճենից, օգտագործվում է խորը պատճենը։