Ce module fournit des opérations de copie génériques (superficielle et
profonde).
Résumé de l'interface:
La différence entre copie superficielle et profonde n'est pertinente
que pour les objets composés (les objets qui contiennent d'autres
objets, comme les listes et les instances de classe):
Souvent les opérations de copie profonde soulèvent deux problèmes
qui n'existent pas avec les opérations de copie superficielle:
La fonction deepcopy() évite ces problèmes en:
Cette version ne copie pas des types comme module, classe, fonction, méthode,
trace de pile, instance d'activation, fichier, socket, fenêtre, tableau, ou tout type
similaire.
Les classes peuvent utiliser les mêmes interfaces pour contrôler la
copie que pour contrôler la sérialisation: elles peuvent définir des
méthodes appelées __getinitargs__(), __getstate__() et
__setstate__(). Voir la description du module
pickle pour des informations sur ces
méthodes. Le module copy n'utilise pas le module de déclaration
copy_reg.
Pour qu'une classe définisse sa propre implémentation de la copie,
elle peut définir des méthodes __copy__() et __deepcopy__()spécifiques. La première est appelée pour implémenter l'opération de copie
superficielle; on ne lui passe aucun argument supplémentaire. Le second
est appelé pour implémenter l'opération de copie profonde; on lui passe un
argument, le dictionnaire "mémo". Si l'implémentation de __deepcopy__()nécessite de réaliser une copie profonde d'un composant, elle doit appeler
la fonction avec le composant comme premier argument et le dictionnaire
"mémo" comme second argument.
Voir aussi:
Pour les erreurs propres à ce module, copy.error est déclenché.
import copy
x = copy.copy(y) # produit une copie superficielle de y
x = copy.deepcopy(y) # produit une copie profonde de y