非常に基本的な質問があります。クラスで宣言されたループ内の配列を埋める必要があります。単純化されたコードは次のようなものです。
class Arr:
def __init__(self):
self.test = []
var = Arr
for x in xrange(0, 3):
var.test.append(1)
このコードは常に「クラス Arr には属性 'test' がありません」を返しますが、その理由はわかりません。なにが問題ですか?
を使用してクラスのインスタンスを作成する必要がありますvar = Arr()
。
だけを実行するとvar = Arr
、そのクラスのインスタンスではなく、クラス自体var
への参照になります。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):
...
インスタンスを使用
に変更してください
class Arr:
def __init__(self):
self.test = []
var = Arr()
for x in xrange(0, 3):
var.test.append(1)
クラス内のリストに値を割り当てるには、Arr クラスのインスタンスを作成する必要があります。