Sobes.tech
Junior

Milliseid objektide kopeerimise meetodeid teate?

sobes.tech AI

Vastus AI-lt

Pinnaliku ja sügav koopia.

Pinnaliku koopia (Shallow Copy) loob uue objekti, kuid sisemiste objektide viited jäävad samaks. Muudatus sisemistes objektides originaalis kajastuvad ka koopias ning vastupidi.

Sügav koopia (Deep Copy) loob täielikult sõltumatu objekti koopiat, kaasa arvatud kõigi sisemiste objektide koopiad. Muudatused sisemistes objektides originaalis ei mõjuta koopiat.

Python näited:

# Pinnaliku koopia tegemine
import copy

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

# Muudatus sisemises objektis originaalis mõjutab koopiat
original_list[2][0] = 99
# shallow_copy_list on nüüd [1, 2, [99, 4]]
# Sügav koopia
import copy

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

# Muudatus sisemises objektis originaalis ei mõjuta koopiat
original_list[2][0] = 99
# deep_copy_list jääb [1, 2, [3, 4]]

Meetodi valik sõltub objekti struktuurist ja ülesandest. Lihtsate objektide puhul, millel pole sisemisi viiteid, piisab pinnaliku koopiast. Keerulisemate või täieliku sõltumatuse nõudmisel kasutatakse sügavat koopiat.