0

非常に基本的な質問があります。クラスで宣言されたループ内の配列を埋める必要があります。単純化されたコードは次のようなものです。

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

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

このコードは常に「クラス Arr には属性 'test' がありません」を返しますが、その理由はわかりません。なにが問題ですか?

4

4 に答える 4

5

を使用してクラスのインスタンスを作成する必要がありますvar = Arr()

だけを実行するとvar = Arr、そのクラスのインスタンスではなく、クラス自体varへの参照になります。Arr

于 2013-10-17T11:03:44.870 に答える
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):
    ...
于 2013-10-17T11:22:43.910 に答える
0

インスタンスを使用

に変更してください

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

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

クラス内のリストに値を割り当てるには、Arr クラスのインスタンスを作成する必要があります。

于 2013-10-17T11:07:19.297 に答える