3.15 copy -- Operaciones de copia superficial o profunda

Este módulo proporciona operaciones de copia (superficial o profunda) genéricas

Resumen de la interfaz:

import copy

x = copy.copy(y)        # hacer una copia superficial de y
x = copy.deepcopy(y)    # hacer una copia profunda de y
Para errores específicos del módulo, se lanza copy.error.

La diferencia entre la copia superficial y profunda sólo es relevante para los objetos compuestos (objetos que contienen otros objetos, como las listas e instancias de clase):

Hay dos problemas comunes en las operaciones de copia profunda que no se dan en las operaciones de copia superficial:

La función deepcopy() evita estos problemas:

Esta versión no copia tipos como módulos, clases, funciones, métodos, trazas de pila, marcos de pila, ficheros, zócalos, ventanas, matrices o tipos similares.

Las clases pueden utilizar las mismas interfaces para controlar la copia que las que utilizan para controlar el estibado: Pueden definir métodos llamados __getinitargs__(), __getstate__() y __setstate__(). Consultar la descripciíon del módulo pickle para obtener informaciín sobre estos métodos. El módulo copy no usa el módulo de registro copy_reg.

Para que una clase defina su propia implementación de la copia, puede definir los métodos especiales __copy__() y __deepcopy__(). El primero se utiliza para implementar la operación de copia superficial, sin argumentos adicionales. El segundo se usa para implementar la operación de copia profunda. Recibe un argumento, el diccionario descrito anteriormente. Si la implementación de __deepcopy__() necesita hacer una copia profunda de un componente, debería llamar a la función deepcopy() con el componente como primer argumento y el diccionario como segundo argumento.

Más informació en:

Module pickle:
Discusión de los métodos especiales utilizados para soportar recuperación y restauración del estado de los objetos.

Ver Sobre este documento... para obtener información sobre sugerencias.