好的,所以如果你有一个班级实例分配给'比尔'我知道你不能只使用' karl = bill'制作卡尔'一个与bill相同参数的独立实例。对于以下课程:
class person():
def __init__(self,x=5,y=1,z=0):
self.x = x
self.y = y
self.z= z
bill = person()
显然karl = bill,只是让卡尔'指向' bill'的指针,因此对卡尔'实际上是对账单的变更。只有3个变量,通过karl = person(bill.x,bill.y,bill.z)的方法复制karl是微不足道的。
然而,当您添加类变量/参数时,这变得越来越乏味。 haircolor,hairlenth,eye color,on and on。例如,组成一个人的所有属性。
有没有办法简写/自动克隆一个类的实例? python是否保留了一个类的可迭代列表'参数,所以你可以做类似的事情 "对于bill._args中的n:"或者其他的东西?
或者这不是开发具有大量变量的类的最佳方法吗?
答案 0 :(得分:1)
使用副本:
In [1]: class person():
...: def __init__(self,x=5,y=1,z=0):
...: self.x = x
...: self.y = y
...: self.z= z
...:
In [2]: p = person()
In [3]: import copy
In [5]: copy_of_p = copy.copy(p)
In [6]: id(copy_of_p)
Out[6]: 4524984368
In [7]: id(p)
Out[7]: 4525007432
In [8]: copy_of_p.x = 50
In [9]: p.x
Out[9]: 5
答案 1 :(得分:1)
参考上面代码中的课程person
:
import copy
bill = person()
billsShallowClone = copy.copy(bill)