Python对象复制先前创建的对象,

时间:2014-04-01 13:38:45

标签: python object

我有一个程序(下面简化版),它在循环中创建对象。在该对象中,有一个变量应该在创建对象时设置。然而,它接缝是存储先前创建的对象的值...例如/

class createList()

    list1 = []

    def __init__(self, int):
        list1.append(int)

for i in range (0, 3)
   x = createList(i)
   print(x.list1)


>>> 0
>>> 0, 1
>>> 0, 1, 2
>>> 0, 1, 2, 3

有人能指出我的方向,做错了吗?

2 个答案:

答案 0 :(得分:1)

您已将list1定义为类变量。因此,它与createList的所有实例共享。

您想要的是将其定义为实例变量。

class createList(object):
    def __init__(self, integer):
        self.list1 = []
        self.list1.append(integer)

>>> for i in range(3):
...     x = createList(i)
...     print(x.list1)
...     
... 
[0]
[1]
[2]

在列表中存储单个值听起来有点奇怪,但是在你给出的上下文中是不可能的。另外,覆盖内置int是不好的做法。

PS。从技术上讲,python没有类或实例变量,它有数据属性。但是,在类语句体中定义的变量是在每个实例化对象之间共享的静态变量。实例变量也是数据属性,但对于相关对象是本地的。

答案 1 :(得分:1)

我昨天刚刚给出了非常类似问题的解释。请参阅my answer here