python 复制类
时间: 2023-07-04 17:03:54 浏览: 35
在 Python 中,可以使用 `copy` 模块中的 `copy` 和 `deepcopy` 函数来复制类。其中,`copy` 函数用于浅复制,而 `deepcopy` 函数用于深复制。
浅复制只会复制对象中的引用,而不会复制对象本身。如果对象中包含其他对象,则浅复制仍然会共享这些对象。
深复制则会递归地复制对象及其所有子对象,因此每个对象都将具有自己的副本。
下面是一个简单的示例,演示了如何使用 `copy` 和 `deepcopy` 函数来复制类:
```python
import copy
class MyClass:
def __init__(self, x):
self.x = x
self.lst = [1, 2, 3]
# 创建一个 MyClass 实例
obj1 = MyClass(10)
# 浅复制 MyClass 实例
obj2 = copy.copy(obj1)
# 深复制 MyClass 实例
obj3 = copy.deepcopy(obj1)
# 修改 obj1 中的列表对象
obj1.lst[0] = 100
# 打印 obj1、obj2 和 obj3 中的列表对象
print(obj1.lst) # [100, 2, 3]
print(obj2.lst) # [100, 2, 3]
print(obj3.lst) # [1, 2, 3]
```
在上面的示例中,我们首先创建了一个 `MyClass` 实例 `obj1`,然后分别使用 `copy` 和 `deepcopy` 函数来复制它。接着,我们修改了 `obj1` 中的列表对象,并打印了所有三个对象中的列表对象。
由于浅复制只复制了对象中的引用,因此 `obj2` 和 `obj1` 中的列表对象指向了同一个对象,因此它们的值都被修改了。而深复制则递归地复制了对象及其所有子对象,因此 `obj3` 中的列表对象没有被修改。