我有一个非常基本的问题。我需要在类中声明的循环中填充数组。简化的代码类似于:
class Arr:
def __init__(self):
self.test = []
var = Arr
for x in xrange(0, 3):
var.test.append(1)
此代码始终返回“类Arr没有属性'test'”,但我没有看到原因。有什么问题?
答案 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