一种自动复制类变量的方法?

时间:2015-10-09 04:36:12

标签: python

好的,所以如果你有一个班级实例分配给'比尔'我知道你不能只使用' 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:"或者其他的东西?

或者这不是开发具有大量变量的类的最佳方法吗?

2 个答案:

答案 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)