如何将类的所有属性复制到类的新实例。 在下面的例子中,使用python的工作方式,当我使用b = a时,它将b和a分配给相同的内存地址。当我改变" b"这也改变了" a。" Both elements of the list are stored at the same address
class test:
def __init__(self, name="Name",data=[]):
self.name=name
self.data=data
list=[]
a = test("First Name",["DATA1","DATA2","DATA3"])
b=a
list.append(a)
list.append(b)
我想要实现类似于list类允许你这样做的东西,将列表复制到新的内存地址。
list1=[1,2,3]
list2=list(list1)
所以就我而言。
a = test("First Name",["DATA1","DATA2","DATA3"])
b=test(a)
无需
b=test(a.name,a.data)
编辑
我希望获得与
相同的效果 b=copy.deepcopy(a)
但通过这种用法。
b=test(a)
答案 0 :(得分:0)
使用copy
:
import copy
b = copy.deepcopy(a)
答案 1 :(得分:0)
您可能想要编写复制构造函数。例如......
import copy
class Foo:
def __init__(self, data):
self._data = data
@classmethod
def from_foo(cls, class_instance):
data = copy.deepcopy(class_instance._data)
return cls(data)
答案 2 :(得分:0)
这实现了我想要做的事情。
class Test:
def __init__(self, arg):
if isinstance(somearg, self.__class__):
self.__dict__ = somearg.__dict__.copy()
else:
self.var = arg
用法:
a=Test(123)
b=Test(a)