Python 常用模块之 copy 对象复制

copy 是python 内置的对象复制模块,该模块提供了两个函数copy()和deepcopy(),前者是浅复制,后者为深复制。

copy() 浅复制

浅复制的对象只能对顶层对象有效,对象内部的其他对象都无效

class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y

class Rectangle:
    def __init__(self, width, height, corner):
        self.width = width
        self.height = height
        self.corner = corner

p = Point(0, 0)
box = Rectangle(100, 50, p)

# 我们创建了两个类,一个Point点,一个Rectangle矩形
# Rectangle有三个属性,宽,高,和一个角点
# 我们用copy浅复制一个box对象
box1 = copy.copy(box)
# 这个时候box1的宽和高和box的是完全不相干的,你修改box1的宽和高不会影响box的
# 但是你修改box1.corner.x,box.corner.x也会受影响,应为它们本身就是一个这就是浅复制

# 这是深复制
box2 = copy.deepcopy(box)
# 这时你在修改box2的所有属性都不会影响其他的,深复制可以复制所有层次

本文到此结束,谢谢阅读!峰影

Leave a Comment