在面向对象编程中,保存一个对象而不带它的关联可以通过以下解决方法实现:
import copy
class MyClass:
def __init__(self, data):
self.data = data
data = [1, 2, 3]
obj = MyClass(data)
# 创建一个深拷贝的对象副本
copied_obj = copy.deepcopy(obj)
# 修改原始对象的数据
obj.data.append(4)
print(obj.data) # 输出: [1, 2, 3, 4]
print(copied_obj.data) # 输出: [1, 2, 3]
在上述示例中,copied_obj
是通过深拷贝创建的obj
的独立副本,它们的data
属性是完全独立的。
import pickle
class MyClass:
def __init__(self, data):
self.data = data
data = [1, 2, 3]
obj = MyClass(data)
# 将对象序列化为字节流
serialized_obj = pickle.dumps(obj)
# 将字节流反序列化为新的对象
deserialized_obj = pickle.loads(serialized_obj)
# 修改原始对象的数据
obj.data.append(4)
print(obj.data) # 输出: [1, 2, 3, 4]
print(deserialized_obj.data) # 输出: [1, 2, 3]
在上述示例中,deserialized_obj
是通过将obj
对象序列化为字节流,然后反序列化创建的新对象。它们的data
属性是完全独立的。
以上是两种常用的解决方法,可以根据具体情况选择适合的方法来保存一个对象而不带它的关联。
上一篇:保存一个大数据集到h5文件
下一篇:保存一个工作簿