Diferencia entre copia superficial y profunda de una clase

Copia superficial: la repetición superficial es más rápida. Sin embargo, es «perezoso» porque maneja punteros y referencias. En lugar de crear una copia contemporánea del conocimiento particular al que apunta el puntero, simplemente copia sobre el precio del puntero. Entonces, tanto el primero como la copia pueden tener punteros que hacen referencia al conocimiento subyacente constante.

Copia profunda: la repetición profunda realmente clona los datos subyacentes. No se comparte entre el primero y por lo tanto la copia.

A continuación se muestra la diferencia tabular entre la copia superficial y la copia profunda:
 

Copia superficial Copia profunda
Shallow Copy almacena las referencias de los objetos a la dirección de memoria original.    La copia profunda almacena copias del valor del objeto.
Copia superficial refleja los cambios realizados en el objeto nuevo/copiado en el objeto original. La copia profunda no refleja los cambios realizados en el objeto nuevo/copiado en el objeto original.
Shallow Copy almacena la copia del objeto original y señala las referencias a los objetos. La copia profunda almacena la copia del objeto original y también copia recursivamente los objetos.
La copia superficial es más rápida. La copia profunda es comparativamente más lenta.

A continuación se muestra el programa para explicar la copia superficial y profunda de la clase.

Python3

# Python3 implementation of the Deep
# copy and Shallow Copy
from copy import copy, deepcopy
 
# Class of Car
class Car:
  def __init__(self, name, colors):
     
     self.name = name
     self.colors = colors
     
honda = Car("Honda", ["Red", "Blue"])
 
# Deepcopy of Honda
deepcopy_honda = deepcopy(honda)
deepcopy_honda.colors.append("Green")
print(deepcopy_honda.colors, \
      honda.colors)
 
# Shallow Copy of Honda
copy_honda = copy(honda)
 
copy_honda.colors.append("Green")
print(copy_honda.colors, \
      honda.colors)
Producción: 

['Red', 'Blue', 'Green'] ['Red', 'Blue']
['Red', 'Blue', 'Green'] ['Red', 'Blue', 'Green']


 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *