我有一个非常基本的问题。我需要在一个类中声明的循环中填充一个数组。简化的代码类似于:
class Arr:
def __init__(self):
self.test = []
var = Arr
for x in xrange(0, 3):
var.test.append(1)
这段代码总是返回“class Arr has no attribute 'test'”,但我看不出原因。怎么了?
您必须使用创建类的实例var = Arr()
。
如果你只是var = Arr
, thenvar
是对类Arr
本身的引用,而不是该类的实例。
您应该创建一个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):
...
您会看到“Arr 类没有属性‘test’”,因为该类没有。一个实例将具有该属性。为了使它成为类的属性,您必须......好吧,使它成为类的属性。
class Arr(object):
test = []
var = Arr
for x in xrange(0, 3):
var.test.append(1)
print Arr.test
使用实例
请改为
class Arr:
def __init__(self):
self.test = []
var = Arr()
for x in xrange(0, 3):
var.test.append(1)
您必须创建 Arr Class 的实例,才能将值分配给类内的列表