0

これは非常に単純な質問のように思えますが、私の特定の問題に対処する答えはないようです。これが、initメソッドが実際にクラス インスタンス変数 'listlist' を開始しない理由です。

class PointsList():
    def _init_(self):        
        self.listlist = [None]
    def addtolist(self,item):
        self.listlist.append(item)              
    def getlist(self):
        return self.listlist


a = PointsList()
a.addtolist('Scarlet')
print a.getlist()

上記のコードを実行すると、次のようになります: AttributeError: PointsList インスタンスに属性 'listlist' がありません

「addtolist」メソッドが明らかに存在しない「listlist」インスタンス変数にアイテムを追加しようとすると、エラーは 5 行目にトレースされます。

くぼみを何度も確認しましたが、問題ないようです。Python のインストールに何か問題がありますか? 私は Python v2.7.5 (まだ 2.7.6 にはなっていません) と Spyder IDE v2.2.0 を使用しています。

4

1 に答える 1

2

Python の特別なメソッドは、最初と最後に2 つのアンダースコアを使用します。__init__ではなく、イニシャライザに名前を付ける必要があります_init_

class PointsList():
    def __init__(self):        
        self.listlist = [None]

アンダースコア文字は通常、接続して長い行を形成するように表示されますが、 の前に2 つのinitアンダースコアがあり、後に 2 つのアンダースコアがあります。

于 2013-11-02T19:37:22.600 に答える