.__deepcopy__()函数-深拷贝

在 Python 中,__deepcopy__ 方法是一种特殊的魔法方法,用于定义对象在进行深拷贝时的行为。深拷贝(Deep Copy)是一种复制对象的方法,其中对象本身以及对象中包含的所有嵌套对象都会被递归地复制,而不是共享引用。copy.deepcopy() 函数通常会尝试调用对象的 __deepcopy__ 方法,如果该方法不存在,则会递归地拷贝对象的各个元素。

深拷贝(Deep Copy)是一种复制对象的方法,其中对象本身以及对象中包含的所有嵌套对象都会被递归地复制,而不是共享引用。深拷贝创建了一个全新的对象,它与原始对象完全独立,对其中一个对象的修改不会影响另一个对象。在 Python 中,可以使用 copy 模块的 deepcopy() 函数来执行深拷贝操作。

深拷贝适用于包含嵌套结构(如列表中嵌套列表,字典中嵌套字典等)的对象,以确保复制整个结构而不仅仅是引用。以下是一个简单的深拷贝示例:

复制代码
import copy

# 原始列表,包含嵌套列表
original_list = [1, 2, [3, 4]]

# 使用深拷贝创建新的列表
deep_copied_list = copy.deepcopy(original_list)

# 修改原始列表中的嵌套列表
original_list[2][0] = 99

# 打印结果
print(original_list)           # [1, 2, [99, 4]]
print(deep_copied_list)        # [1, 2, [3, 4]]  # 注意:深拷贝创建了一个独立的对象,不受原始对象修改的影响

在这个例子中,deepcopy(original_list) 创建了一个深拷贝 deep_copied_list,其中嵌套列表是完全独立的,因此对原始列表的修改不会影响深拷贝后的列表。

如果你有一个自定义类,并希望在使用 copy.deepcopy() 进行深拷贝时定义对象的行为,你可以实现 __deepcopy__ 方法。下面是一个简单的示例:

复制代码
import copy

class MyClass:
    def __init__(self, data):
        self.data = data

    def __deepcopy__(self, memo):
        # 定义对象的深拷贝行为
        new_object = MyClass(copy.deepcopy(self.data, memo))
        return new_object

# 创建对象
obj = MyClass([1, 2, 3])

# 进行深拷贝
deep_copied_obj = copy.deepcopy(obj)

在这个例子中,copy.deepcopy(obj) 调用了 obj 的 __deepcopy__() 方法,该方法定义了如何进行对象的深拷贝。在实际应用中,你可以根据对象的结构逐一递归地进行深拷贝操作,以确保对象及其嵌套元素都被正确复制。

相关推荐
第九序言T7 小时前
Python 数据处理进阶(十八)批量处理同结构文件:一个文件夹一次跑完
开发语言·python·自动化·pandas·数据处理
Java后端的Ai之路8 小时前
CAS并发控制-从CPU指令到企业级乐观锁
vue.js·人工智能·python·cas·乐观锁
qq_426003968 小时前
UI自动化高频次登录login限流解决方案
python·ui·自动化
Sakura_j_h_8 小时前
EasyEDA PCB 快速设计Skills
c++·python·github
龙亘川9 小时前
构建城市公共安全数字底座:亘川智城智慧安防系统全维度解读
java·大数据·开发语言·人工智能·信息可视化
程序喵大人9 小时前
【C++入门】内存模型与资源管理 - 09 shared_ptr 和 weak_ptr 解决共享,也带来代价
开发语言·c++·资源管理·智能指针·内存模型
quantdash_cc9 小时前
如何验证历史行情的交易日期是否完整覆盖研究区间?
python·数据分析·pandas·量化交易·股票数据·quantdash
I Am a robert girl9 小时前
当智能体学会“串通”:从长程交互中读懂涌现式合谋
python·多智能体系统·多智能体协作·llm agent·涌现式合谋·对齐问题·激励机制设计
Raas1009 小时前
AI网关部署方案?从部署到上线全流程
java·开发语言·人工智能·gateway·ai网关·企业级ai网关·企业级ai产品
云和数据.ChenGuang10 小时前
光哥说Python RAG 系统需要哪些评估指标:从检索到生成的全链路评测指南
网络·人工智能·python·算法·langchain