Maison  >  Article  >  développement back-end  >  Comment créer des copies indépendantes d’objets en Python ?

Comment créer des copies indépendantes d’objets en Python ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-03 17:37:29659parcourir

How to Create Independent Copies of Objects in Python?

Copie d'objets en Python : instances indépendantes

Énoncé du problème :

En Python, la création d'une copie d'un objet peut semble aussi simple que d'attribuer un objet à un autre. Cependant, cette simple affectation crée une référence à l'objet d'origine au lieu d'une nouvelle instance indépendante. Les modifications apportées à un objet se propageront à l'autre. Cela peut entraîner un comportement inattendu et des bugs potentiels.

Solution : Copie approfondie avec copy.deepcopy()

Pour créer une copie véritablement indépendante d'un objet, nous utilisons la fonction copy.deepcopy() du module de copie. Cette fonction effectue une copie complète, copiant de manière récursive tous les attributs et objets enfants de l'objet d'origine. La copie résultante est un objet indépendant avec son propre emplacement mémoire et ses propres valeurs.

Exemple :

<code class="python">import copy

original_obj = {'name': 'Alice', 'age': 30}
copy_obj = copy.deepcopy(original_obj)

copy_obj['name'] = 'Bob'  # Modify copy

print(original_obj)  # Output: {'name': 'Alice', 'age': 30} (Unchanged)
print(copy_obj)  # Output: {'name': 'Bob', 'age': 30} (Independent)</code>

Dans ce cas, copy_obj est véritablement indépendant de original_obj. La modification de l'un n'affecte pas l'autre. Cela vous permet de créer plusieurs objets avec des valeurs distinctes tout en partageant les mêmes propriétés initiales.

Remarque :

Copie superficielle, qui peut être réalisé avec copy.copy(), copie uniquement les valeurs de la structure de données, en laissant toutes les références contenues telles qu'elles étaient. La copie approfondie est généralement préférée pour garantir l'indépendance des objets.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn