将值附加到类数组中

时间:2013-10-17 11:02:27

标签: python arrays class

我有一个非常基本的问题。我需要在类中声明的循环中填充数组。简化的代码类似于:

class Arr:
    def __init__(self):
        self.test = []

var = Arr
for x in xrange(0, 3):
    var.test.append(1)

此代码始终返回“类Arr没有属性'test'”,但我没有看到原因。有什么问题?

4 个答案:

答案 0 :(得分:5)

您必须使用var = Arr()创建班级的实例

如果您只是var = Arr,那么var就是对类Arr本身的引用,而不是该类的实例。

答案 1 :(得分:1)

您应该创建一个Arr实例,而不是像其他提到的那样操纵类本身。

但是,从外部操纵内部实例成员也被认为是一种很好的做法。你应该有一个初始化test数组的方法。:

class Arr:
    def __init__(self):
        self.test = []

    def initialize(self, cnt):
        for i in range(cnt):
            self.test.append( 1 )

另外你也可以考虑使用新式的python类:

class Arr(object):
    ...

答案 2 :(得分:0)

使用实例

请改为

class Arr:
    def __init__(self):
        self.test = []

var = Arr()
for x in xrange(0, 3):
    var.test.append(1)

您必须创建一个Arr类实例,以便为类

中的列表赋值

答案 3 :(得分:0)

你看到“班级Arr没有属性'测试'”,因为班级没有。虽然实例具有该属性。为了使它成为类的属性,你必须......好吧,把它作为类的属性。

class Arr(object):
    test = []

var = Arr
for x in xrange(0, 3):
    var.test.append(1)

print Arr.test